输入句子前五个单词中匹配字符串的正则表达式

时间:2016-09-04 08:51:31

标签: regex regular-language

我希望匹配文章标题的开头到第5个字的特定字符串。

输入字符串:

The 14 best US colleges in the West are dominated by California — here's who makes the cut.

正则表达式:

/^.*(\bbest\b|\btop\b|\bhot\b).*$/

目前匹配整篇文章标题但想搜索到“大学”。 并且还需要忽略或不匹配的字符串,如笔记本电脑,热点等。

3 个答案:

答案 0 :(得分:0)

您可以使用此表达式

^((?:\w+\s?){1,5}).*

说明:

^在字符串

的开头断言位置

\w+匹配任何单词字符

\s?匹配任何空格字符

{1,5}量词 - 1至5次,尽可能多次

.*匹配任何字符(换行符除外)

这匹配前5个单词(和空格)。

答案 1 :(得分:0)

^(\w+\s){0,4}\b(best|top|hot)(\s|$)

您想要在输入句子的前五个单词中匹配字符串。然后,如果从句子的开头开始计算,则在要匹配的单词之前必须有0-4个单词。因此,在您要匹配的特定字词之前需要^(\w+\s){0,4}。见https://regex101.com/r/nS0dU6/4

答案 2 :(得分:0)

regex101再次提供帮助。

^(?=(?:\w+\s){0,4}?(?:best|top|hot)\b(?!-))(\w+(?:\s\w+){0,4})

  • (?=(?:\w+\s){0,4}?(?:best|top|hot)\b(?!-)检查关键字是否在前5个内(请注意,(?!-)已添加,以满足hot-spot等字词的需要)
  • (\w+(?:\s\w+){0,4})然后匹配第一个最多5个字