给定一个格式为 someName_v0001
的字符串,如何编写一个正则表达式来给出名称(_v 之前的位)和版本(_v 之后的位),其中版本后缀是可选。
例如对于输入
input => (name, version)
abc_v0001 => (abc, 0001)
abc_v10000 => (abc, 10000)
abc_vwx_v0001 => (abc_vwx,1)
abc => (abc, null)
我已经尝试过了...
(.*)_v\(d*)
...但我不知道如何处理可选版本后缀的情况。
最佳答案
你可以使用
^(.*?)(?:_v0*(\d+))?$
请参阅regex demo .
详细信息
^
- 字符串开头(.*?)
- 捕获组 1:除了换行符之外的任何零个或多个字符,尽可能少(?:_v0*(\d+))?
- 可选序列_v
-_v
子字符串0*
- 零个或多个0
个字符(\d+)
- 捕获组 2:任意一位或多位数字
$
- 字符串结尾。
关于regex - 我该如何为此编写正则表达式...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63973747/