如何匹配此字符串中的重复模式?

时间:2016-07-12 00:57:00

标签: regex pcre

我试图在以下ODATA过滤器中找到包含查询的匹配项:

Name eq 'test' and contains(Address,'fdgr345') and contains(Description,'test')

我正在使用正则表达式: (contains\s*\(([\w]+)\,\'([\s\w\s]+\')\))+

然而,这个正则表达式只返回第一场比赛,即 contains(Address,'fdgr345')

如何才能获得contains(..., '...')模式的所有出现?

1 个答案:

答案 0 :(得分:0)

您需要传递某种形式的全局标志才能告诉正则表达式捕获正则表达式的所有实例。

通常情况如下:

/REGEX/flags

或在你的情况下:

/contains\s*\(([\w]+)\,\'([\s\w\s]+\')\)/g

其中g-flag表示全局。另外我删除了outer()+,因为它试图匹配重复的模式,如下所示:

TEXTnStuff contains(Address,'fdgr345')contains(Address,'abc123') MORETEXT