Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Regex Lookarounds - Fatal编程技术网

Regex 编辑正则表达式,以便在分组项未出现时仍存在匹配项

Regex 编辑正则表达式,以便在分组项未出现时仍存在匹配项,regex,regex-lookarounds,Regex,Regex Lookarounds,我有下面的正则表达式 (OUT|IN) (?P<typ>\D+?)(?=.*\bd:(?P<dest>\d+)\b)(?=.*\bs:(?P<src>\d+)\b) 我想编辑我的正则表达式,以便在其中一个或多个术语不存在时仍然匹配。i、 e OUT MYTYPE s:12 将仍然匹配,组src将仍然包含12个,只是不会有dest组 我试着放了?在单词边界的末尾,但出现了错误: (?=.*\bs:(?P<src>\d+)\b)? 试验 --

我有下面的正则表达式

(OUT|IN) (?P<typ>\D+?)(?=.*\bd:(?P<dest>\d+)\b)(?=.*\bs:(?P<src>\d+)\b) 
我想编辑我的正则表达式,以便在其中一个或多个术语不存在时仍然匹配。i、 e

OUT MYTYPE s:12
将仍然匹配,组src将仍然包含12个,只是不会有dest组

我试着放了?在单词边界的末尾,但出现了错误:

(?=.*\bs:(?P<src>\d+)\b)? 
试验

---编辑---


这个问题的早期版本包括组内的数字。正如@Ashish_Ranjan正确指出的那样,这需要[^\d\s]+而不是\d+

这应该做你想做的事情:

(OUT|IN) (?P<typ>\S+)\s+[s:]{0,}(?P<dest>\d*)\s*[d:]{0,}(?P<src>\d*)

现场演示

我也发现这是可行的:OUT | IN?p\D+??=*\bd:?P\d+?\b?=.*\bs:?P\d+?\b\d+如果您的类型包含数字,则应为[^\d\s]+,如问题中所述。
(OUT|IN) (?P<typ>\S+)\s+[s:]{0,}(?P<dest>\d*)\s*[d:]{0,}(?P<src>\d*)