Regex 仅当前一组匹配时才提取组
我有两个例子Regex 仅当前一组匹配时才提取组,regex,Regex,我有两个例子 abc 34 def12 ghi abc 34 33 ghi 和一个regexp ^.*?([0-9]{2}) ?([a-z]{2,3})? ?([0-9]{2}).*$ (见附件) 我需要对其进行修改,以提取$1,$2,$3,但仅当$2存在时,即我需要它返回 34 def12 <WRONG> 34 def12 如何做到这一点 请注意,您在第二个捕获组(([a-z]{2,3})之后放置了一个?) 它导致即使特定行不包含“字母”部分,整个正则表达式也将匹配 只需删
abc 34 def12 ghi
abc 34 33 ghi
和一个regexp
^.*?([0-9]{2}) ?([a-z]{2,3})? ?([0-9]{2}).*$
(见附件)
我需要对其进行修改,以提取$1
,$2
,$3
,但仅当$2
存在时,即我需要它返回
34 def12
<WRONG>
34 def12
如何做到这一点 请注意,您在第二个捕获组(
([a-z]{2,3})
之后放置了一个?
)
它导致即使特定行不包含“字母”部分,整个正则表达式也将匹配
只需删除这个
?
,这样在这种情况下整个正则表达式就不会匹配。@anubhava抱歉,我说得不清楚:如果不匹配,替换函数会为我提供一切,我的意思是第二个示例不匹配(已编辑)。然后将第二个非可选设置为: