正则表达式捕获句子中的任何几个单词

时间:2013-08-02 22:16:25

标签: regex spamassassin

我想构建一个匹配的spamassassin网址:

  

“通知安全密钥已过期”

和变体,在单词"has"之前可以有1到3个单词且仍然必须匹配。

我一直在尝试和测试在线正则表达式工具。我使用了.\w,但只能在单词"has"之前只使用一个单词。我想要1到3个单词。

2 个答案:

答案 0 :(得分:1)

要匹配单词“has”之前的1-3个单词,您可以使用(\w+ ){1,3}has

希望这已经回答了你的问题。这似乎就是你所要求的。

答案 1 :(得分:0)

这是一个正则表达式,匹配单词“key”和“has”之间的1到3个单词,这里是指向RegExr测试它的链接。我承认我不熟悉spamassassin,但如果你需要一个正则表达式来匹配一行文本,那么这应该有效:

key(\b\s((\w+\b\s){1,3})has

使用大括号{1,3}表示前一个标记(在本例中为组(\w+\b\s))必须至少匹配一次但不超过三次。 \b令牌与单词边界匹配,\s匹配任何空格。如您所知,\w匹配任何字母数字字符。

如果需要,可以使用反向引用来提取组1,组1现在包含“key”和“has”之间的单词(以及它们周围的空白)。希望这有帮助!