仅在先前组匹配时提取组

时间:2017-06-22 10:21:36

标签: regex

我有两个例子

abc 34 def12 ghi
abc 34 33 ghi

和正则表达式

^.*?([0-9]{2}) ?([a-z]{2,3})? ?([0-9]{2}).*$

(见https://regex101.com/r/U2JNaS/1

我需要修改它以提取$1$2$3仅在 $2存在时,即我需要它返回

34 def12
<WRONG>

如何实现?

1 个答案:

答案 0 :(得分:0)

请注意,您在第二个捕获组(?)之后放置了([a-z]{2,3})

即使特定行不包含“字母”部分,也会导致整个正则表达式匹配。

只需删除此?,以便在这种情况下整个正则表达式都不匹配。