我有一个像这样的字符串:
:v3.11.3-4.38
我想在名为 version
的变量中获取 :v3.11.3
(并跳过 -4.38
)。
我正在尝试这个但没有帮助:
^.*:(v?)(?P<version>.*(?:-.*)$)
是否可以在捕获组中跳过连字符(或任何特定字符)和以下字符?
最佳答案
您似乎想要获取满足 :v?<version-number>
的行上最后一个匹配的版本模式。
您可以使用
^.*:v?(?P<version>\d+(?:\.\d+)*)
移动(
如有必要,可以使用括号调整命名组的开头。
请参阅regex demo .
详细信息
-
^
- 字符串开头 -
.*
- 除换行符之外的任意 0 个或多个字符,尽可能多 -
:v?
-:
或:v
-
(?P<version>\d+(?:\.\d+)*)
- 命名捕获组version
: 1+ 位数字,然后是 0 个或多个.
序列和 1+ 位数字。
关于python - 跳过从正则表达式中的字符开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480397/