我需要在模式中捕获可选文本,并在以下匹配的方案中使用提取的示例i
,9
,Caffè
和you
:
有效匹配:
love!
9 love!
love Caffè!
i love you!
无效的匹配:
love
iloveyou
我的rule:[*] love [*]!
,[*]
表示空白文字,可以接受拍摄。
我尝试制作正则表达式((?:.+) )?love( (?:.+))?!
(online),但未能捕获正确的文本。
答案 0 :(得分:2)
您可以将capturing与non-capturing groups交换:
(?:(.+) )?love(?: (.+))?!
^^ ^^
请参阅regex demo
现在,您在组内的文本将没有空格,因为它们是非捕获组的一部分,仅用于对子模式进行分组。