如何指定正则表达式模式的重复次数

时间:2017-06-22 20:38:13

标签: regex syntax

我有一句话,例如以下内容:

Diesmal geht es um den GenitivnachPräpositionenamBeispiel von“wegen”:Wegen des Sturmes oder wegen dem Sturm?

在这句话中,我想在句子中间匹配单词am,about。但是,我也希望在这个词之前和之前匹配5个单词。这样做的正则表如下:

.+?\s+.+?\s+.+?\s+.+?\s+.+?am.+?\s+.+?\s+.+?\s+.+?\s+.+?\s+

但这看起来很笨拙。我的问题是有没有办法指定。+?\ s +部分的重复次数。有人可以帮我吗?我为此目的使用PHP。

2 个答案:

答案 0 :(得分:4)

使用花括号:

a{2}   // two a's
a{1,}  // one or more a's
a{1,3} // between 1 and 3 a's

对复杂模式使用括号:

(foo){2,3} // two or three foo's

Read more about repetitions in regex

答案 1 :(得分:2)

(\s+.+?){3}重复最后一项#times。因此\s+.+?\s+.+?\s+.+?相当于(.+?\s+){5}am(.+?\s+){5}

所以你会使用<body> <div id="fixed"> <p>Springathing</p> <ul id="nav"> <li><a href="#about">About</a></li> <li><a href="portfolio">Portfolio</a></li> <li><a href="contact">Contact</a></li> </ul> </div> <div id="overall"> <div id="about"> </div> <div id="portfolio"> </div> <div id="contact"> </div> <div id="pageinfo"> </div> <div id="copyright"> </div> </div> </body>