捕获正则表达式中的可选组

时间:2017-02-26 15:17:17

标签: regex

我需要在模式中捕获可选文本,并在以下匹配的方案中使用提取的示例i9Caffèyou

  • 有效匹配:

    love!
    9 love!
    love Caffè!
    i love you!
    
  • 无效的匹配:

    love
    iloveyou
    

我的rule[*] love [*]![*]表示空白文字,可以接受拍摄。

我尝试制作正则表达式((?:.+) )?love( (?:.+))?!online),但未能捕获正确的文本。

1 个答案:

答案 0 :(得分:2)

您可以将capturingnon-capturing groups交换:

(?:(.+) )?love(?: (.+))?!
 ^^            ^^

请参阅regex demo

现在,您在组内的文本将没有空格,因为它们是非捕获组的一部分,仅用于对子模式进行分组。