有没有一种方法可以指定一个正则表达式来匹配字符串中每隔两次出现的模式?
示例
发布于 2009-02-26 08:51:33
使用分组。
foo.*?(foo)发布于 2009-02-26 08:51:03
假设你想要的模式是abc+d,你想要匹配这个模式在字符串中的第二次出现。
您将构造以下正则表达式:
abc+d.*?(abc+d)这将匹配以下形式的字符串:<your-pattern>...<your-pattern>。既然我们使用了不情愿的限定符*?我们可以肯定的是,两者之间不会再有一场比赛了。使用几乎所有regex实现都提供的匹配器组,您可以检索带括号的组中的字符串,这正是您想要的。
发布于 2009-02-26 08:50:30
会不会像这样的东西
(pattern.*?(pattern))*为你工作?
编辑:
这样做的问题是它使用了非贪婪运算符*?,这可能需要沿字符串进行大量的回溯,而不是只查看每个字母一次。这意味着对于较大的差距,这可能会很慢。
https://stackoverflow.com/questions/589667
复制相似问题