正则表达式计算字符串中的模式数

时间:2017-02-02 15:50:38

标签: regex

我从Regular expression to count number of commas in a string获得了以下正则表达式。

/^([^,]*,){21}[^,]*$/ 

最高评分解决方案(https://stackoverflow.com/a/863137/3787418)是否匹配21个逗号。

如何修改该正则表达式以匹配21次' hello world'而不是一个字符?

1 个答案:

答案 0 :(得分:1)

正则表达式真的不是那个工具,但是你走了:

^(?:(?:[^h]|h(?!ello world))*hello world){21}(?:[^h]|h(?!ello world))*$

这只适用于支持负向前瞻的正则表达式。

它的工作方式与你发现的正则表达式相同:在一个重复21次的小组中,我们匹配“什么不是'hello world'”,然后是“hello world”。困难在于匹配“什么不是'你好世界'”,我已经定义如下:

  • 任何不是h[^h]
  • 的字符
  • h如果后面没有ello worldh(?!ello world)

当然,任何理智的人都会选择在字符串上使用纯文本搜索。