我需要从一个字符串中捕获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] 删除。
我来说两句