2

我想建立一个spamassassin匹配的 URL:

“通知安全密钥已过期”

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

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

4

2 回答 2

1

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

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

于 2013-08-02T23:26:54.017 回答
0

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

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

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

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

于 2013-08-02T23:25:06.120 回答