首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每隔一秒匹配一次

每隔一秒匹配一次
EN

Stack Overflow用户
提问于 2009-02-26 08:41:29
回答 6查看 145.9K关注 0票数 57

有没有一种方法可以指定一个正则表达式来匹配字符串中每隔两次出现的模式?

示例

  • 搜索a 字符串abcdabcd应在位置5处找到一个匹配项
  • 搜索ab E29应在位置5处找到一个匹配项abcdabcd E211应在位置5处找到一个匹配项H212<代码>H113应在位置5处找到一个匹配项搜索e114dab e215应在位置2和4处找到两个匹配项E116aaaaa应在位置2和4处搜索E223应在位置2和4处找到两个匹配项。
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-26 08:51:33

使用分组。

代码语言:javascript
运行
复制
foo.*?(foo)
票数 70
EN

Stack Overflow用户

发布于 2009-02-26 08:51:03

假设你想要的模式是abc+d,你想要匹配这个模式在字符串中的第二次出现。

您将构造以下正则表达式:

代码语言:javascript
运行
复制
abc+d.*?(abc+d)

这将匹配以下形式的字符串:<your-pattern>...<your-pattern>。既然我们使用了不情愿的限定符*?我们可以肯定的是,两者之间不会再有一场比赛了。使用几乎所有regex实现都提供的匹配器组,您可以检索带括号的组中的字符串,这正是您想要的。

票数 15
EN

Stack Overflow用户

发布于 2009-02-26 08:50:30

会不会像这样的东西

代码语言:javascript
运行
复制
(pattern.*?(pattern))*

为你工作?

编辑:

这样做的问题是它使用了非贪婪运算符*?,这可能需要沿字符串进行大量的回溯,而不是只查看每个字母一次。这意味着对于较大的差距,这可能会很慢。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/589667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档