如果后跟某些字符串,则捕获子字符串

时间:2017-01-17 18:27:34

标签: regex recursion capture

我试图捕获引号之间的消息名称。它可以格式化为

  

("AddMessage",function(e){...})

或者即

  

("AddMessage","RemoveMessage",function(e){...})

我试图用正则表达式捕获消息的名称,但是在正则表达式上我试过

\("(?<name>\w+Message)"(,"(\w+Message)")*,function\([\w,]*\){.*?}\)

Regex101 tells me使群组递归以捕获多个邮件的名称。

  

重复捕获组仅捕获最后一次迭代。如果您对数据不感兴趣,请在重复组周围放置捕获组以捕获所有迭代或使用非捕获组。

我真的无法得到它,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您必须将重复的部分捕获到封闭的捕获组中。

在重复的部分添加命名的捕获组 ,并使用&#34;仅分组&#34; (没有捕获捕获组)内部:

\("(?<name>\w+Message)",?(?<messages>(?:"\w+Message",?)*),function\([\w,]*\){.*?}\)

regex101 demo