我从Regular expression to count number of commas in a string获得了以下正则表达式。
/^([^,]*,){21}[^,]*$/
最高评分解决方案(https://stackoverflow.com/a/863137/3787418)是否匹配21个逗号。
如何修改该正则表达式以匹配21次' hello world'而不是一个字符?
答案 0 :(得分:1)
正则表达式真的不是那个工具,但是你走了:
^(?:(?:[^h]|h(?!ello world))*hello world){21}(?:[^h]|h(?!ello world))*$
这只适用于支持负向前瞻的正则表达式。
它的工作方式与你发现的正则表达式相同:在一个重复21次的小组中,我们匹配“什么不是'hello world'”,然后是“hello world”。困难在于匹配“什么不是'你好世界'”,我已经定义如下:
h
([^h]
)h
如果后面没有ello world
(h(?!ello world)
)当然,任何理智的人都会选择在字符串上使用纯文本搜索。