regex - 我该如何为此编写正则表达式...?

标签 regex

给定一个格式为 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/

相关文章:

C# 正则表达式转义某些字符

javascript - 字符串第一个单词在 Javascript 中的位置

regex - 检查 MongoDB 中的值是否匹配

regex - 暴露的JetBrains(DSL Api):使用.regexp()时出现问题的情况

python - 断言字符串与 pytest 中的正则表达式匹配

python - 如何同时匹配多行和单行

regex - 如何正则表达式匹配周围的空格或行首/行尾

javascript - 如何在js中分割字符串,但有一些异常(exception)

CSS 正则表达式选择器匹配一个或另一个条件?

c# - 在 C# 中获取域和子域的正则表达式