我有一个捕获以下表达式的正则表达式
XPT 123A
现在,我需要在正则表达式中添加“内容”以将其余字符串捕获为一个组
XPT 123A I AM VERY HAPPY
因此XPT
将是第1组,123A
第2组和I AM VERY HAPPY
第3组。
这是我的正则表达式(也在这里http://regexr.com/4mocf):
^([A-Z]{2,4}).((?=\d)[a-zA-Z\d]{0,4})
编辑: 我不想命名我的小组(编辑b / c,有些人认为这是另一个问题的重复)
答案 0 :(得分:2)
假设第3组是可选的,则可以使用
^([A-Z]{2,4}) (\d[a-zA-Z\d]{0,3})(?: (.*))?$
^([A-Z]{2,4})\s+(\d[a-zA-Z\d]{0,3})(?:\s+(.*))?$
\s+
匹配任何1个以上的空格字符。
请参见regex demo。
详细信息
^
-字符串的开头([A-Z]{2,4})
-第1组:两个,三个或四个大写ASCII字母\s+
-超过1个空格(\d[a-zA-Z\d]{0,3})
-第2组:一个数字,后跟0个或多个字母数字字符(?:\s+(.*))?
-一个可选的非捕获组,匹配以下情况的1或0:
\s+
-超过1个空格(.*)
-第3组:除换行符外,尽可能多的0+个字符$
-字符串结尾答案 1 :(得分:0)
只需在您的正则表达式中添加以下后缀即可捕获该行的其余部分:
(?<rest>.+)?$