标签: regex
我输入的数据如下:
AB AB_Test AB_Test123
预期产出:
AB AB_Test
我有匹配的正则表达式:
([A-Z]{2})(_([a-zA-Z]*))?
Debuggex Demo
因此,从上面的正则表达式,我得到$ 1&的字符串$ 3,我想修改正则表达式,使字符串在$ 1& $ 2(从正则表达式中省略第2组)。
现在我想使用该组处理匹配的字符串。这就是为什么我希望它按顺序排列。
我们是否有办法改变上述正则表达式?
答案 0 :(得分:2)
如果您尝试消除具有数字的字符串,请使用否定前瞻断言:
^([A-Z]{2})(?!.*\d.*)(?:_([A-Za-z]*))?
Demo
或者在字符串的两端添加锚点:
^([A-Z]{2})(?:_([A-Za-z]*))?$
Demo 2
如果您使用锚点,如果您有多线目标,则需要使用m标记。
m
答案 1 :(得分:1)
您需要将非捕获组用于您不想要的组:
^([A-Z]{2})(?:_([a-zA-Z]*))?$
编辑:我还添加了开始和结束锚点,因为只有当下划线后的字符都是字母时,您似乎才想匹配该行。