正则表达式在两个字符串之间找到固定数量的单词

时间:2013-06-10 23:02:28

标签: regex

我有以下字符串:

    String phrase = "higher than <> expected";

<>代表一些不超过5的单词。

我的正则表达式返回无限数量的匹配,这是无用的,因为我不想要超过5场比赛。

String regex = "(?i)higher than(.*?)expected(?-i)";

4 个答案:

答案 0 :(得分:4)

以下正则表达式适合您:

(?<=higher than\s)((?:\w+\s*){1,5})(?=\s+expected)

现场演示:http://www.rubular.com/r/EUDywHXmGm

答案 1 :(得分:1)

您可以将出现次数与正则表达式匹配,但可能需要扩展的正则表达式。

\d{1-3}将匹配1到3位数字。

您还可以使用非贪婪匹配,因为当前实现的问题是(.*?)匹配所有内容。例如,<.+?>将匹配XML标记。 ?之后的+使其变得懒惰。

这是一个很好的reference site for regexes

答案 2 :(得分:1)

向后看,环顾四周适合这里,但作为替代方案,你也可以在非捕获组的帮助下使用这个。

您还应该在higher than之后和expected之前考虑多个前导和尾随空格。

(?:higher than\s*)((?:\w+\s*){0,5})(?:\s*expected)

答案 3 :(得分:0)

如果单词也可能以相反的顺序出现,我们还需要指定相反的模式:

double