我正在try 将版本子字符串与v#.##.#或Version#.##.#形式的正则表达式进行匹配.版本号的数量并不重要,v或版本后可能有也可能没有空格.这就是我到目前为止一直在try 的,但在某些情况下不匹配:
\bv\s?[\d.]*\b|\bversion\s?[\d.]*\b
例如,它匹配版本6.2.11,但不匹配C2000_v6.2.11.我对regex比较陌生,不确定我在这里做错了什么.我很肯定还有更好的方法来做"或"部分,所以任何帮助都将不胜感激!
我正在try 将版本子字符串与v#.##.#或Version#.##.#形式的正则表达式进行匹配.版本号的数量并不重要,v或版本后可能有也可能没有空格.这就是我到目前为止一直在try 的,但在某些情况下不匹配:
\bv\s?[\d.]*\b|\bversion\s?[\d.]*\b
例如,它匹配版本6.2.11,但不匹配C2000_v6.2.11.我对regex比较陌生,不确定我在这里做错了什么.我很肯定还有更好的方法来做"或"部分,所以任何帮助都将不胜感激!
首先,通过实现一个可选的非捕获组,您的模式可以大大缩短,这样就可以在不需要更改的情况下匹配v
或version
.
接下来,第一个\b
需要单词边界,但版本信息在第二个预期匹配中的_
之后开始,并且_
是单词char.
您可以使用
(?<![^\W_])v(?:ersion)?\s?[\d.]*\b
请看regex demo.
Details:
(?<![^\W_])
-紧靠左侧,不能有字母或数字v
-v
个字符(?:ersion)?
-可选的ersion
字符串\s?
-一个可选的空格[\d.]*
-零个或多个数字或点\b
-一个词的边界.