正则表达式捕获其余部分

时间:2019-10-13 16:58:17

标签: regex

我有一个捕获以下表达式的正则表达式

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,有些人认为这是另一个问题的重复)

2 个答案:

答案 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>.+)?$