Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅当前一组匹配时才提取组_Regex - Fatal编程技术网

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抱歉,我说得不清楚:如果不匹配,替换函数会为我提供一切,我的意思是第二个示例不匹配(已编辑)。然后将第二个非可选设置为: