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*)