正则表达式捕获组除以中间的数字

在零

我需要从一个字符串中捕获3个组。字符串的格式如下:

{phrase 1} {optional number} {optional phrase 2}

这样的一些例子是:

Battery Bank 1
Battery Bank 1 Segments
Battery Bank 1 Warranty Logger
Battery Bank 10
Battery Bank 10 Segments
Battery Bank 10 Warranty Logger
BSU
BSU 1
PCS 3
PCS 1
System
System Meter

如您所见,唯一的强制性组是第一个强制性组,它由文字字符和空格组成,直到出现至少一位数字为止。然后,可选地,另一组单词和空格字符。

到目前为止,这是我所拥有的,但是不能正常工作。它与线匹配。每行应匹配一个。

([a-zA-Z\s]+)(\d+)?(\w)?

这是一个regex101链接,可用于:https ://regex101.com/r/tSGIEm/2

维克多·史翠比维

您可以使用

^(.*?)(?: +(\d+) *(.*))?$

请参阅regex演示

细节

  • ^ -字符串开始
  • (.*?) -第1组:除换行符以外的任何零个或多个字符,请尽可能少
  • (?: +(\d+) *(.*))? -匹配1次或0次出现的可选组:
    • + -1个以上的空格
    • (\d+) -第2组:一个或多个数字
    • * -0+个空格
    • (.*) -第3组:尽可能多的零个或多个除换行符以外的字符
  • $ -字符串结尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章