regex 如何在整个字符串中匹配版本子字符串

y53ybaqx  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(119)

我试图用正则表达式匹配一个版本子字符串,其形式为v###.##.###或version #.##.###。版本号的数量并不重要,在v或version后面可能有空格,也可能没有空格。这是我目前所做的尝试,但在某些情况下并不匹配:

\bv\s?[\d.]*\b|\bversion\s?[\d.]*\b

例如,它匹配“version 6.2.11”,但不匹配c2000_v6.2.11。我对regex比较陌生,不知道我在这里做错了什么。我很确定还有更好的方法来完成“or”部分,所以任何帮助都将不胜感激,谢谢!

kninwzqo

kninwzqo1#

首先,通过实现一个可选的非捕获组,您的模式可以大大缩短,这样vversion就可以在不需要替换的情况下进行匹配。
接下来,第一个\b需要字边界,但是版本信息在第二个预期匹配中的_之后开始,并且_是字字符。
您可以使用

(?<![^\W_])v(?:ersion)?\s?[\d.]*\b

请参阅regex demo

  • 详细数据 *:
  • (?<![^\W_])-紧靠左侧,不能有字母或数字
  • v-一个v字符
  • (?:ersion)?-可选的ersion字符串
  • \s?-可选空格
  • [\d.]*-零个或多个数字或点
  • \b-字边界。

相关问题