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+))?$
请参阅正则表达式演示。
细节
^
- 字符串的开始(.*?)
- 捕获组 1:尽可能少的除换行符以外的任何零个或多个字符(?:_v0*(\d+))?
- 一个可选的序列_v
- 一个_v
子串0*
- 零个或多个0
字符(\d+)
- 捕获组 2:任意一位或多位数字
$
- 字符串结束。
推荐阅读
- javascript - 安全问题:在 POST 请求中发送访问令牌
- reactjs - 我正在尝试使用 jest 在我的代码中执行单元测试,但出现错误
- java - 如何更改同步适配器项目名称
- java - 快速将新创建的对象添加到数组中
- swift - 具有依赖注入的类与具有实现的协议
- sql - 在sql中查找并显示
- ruby-on-rails - 枚举和包含在 models.rb 中不获取数据
- php - imageMagick gif 移出框架
- mongodb - 如何使用java mongo spark连接器进行upsert操作并处理spark中的数据?
- javascript - 以不同的方式声明方法