2013-08-02 24 views
2

我想建立一個匹配spamassassin網址:正則表達式來捕捉任何幾個單詞在句子中

「通知安全密鑰已過期」

和變化,其中可以存在在單詞"has"之前1至3個單詞並且它仍然必須匹配。

我一直嘗試和測試在線正則表達式工具。我使用.\w,但可以使其僅部分地用單詞"has"之前的一個單詞工作。我想從1到3個單詞。

+0

更好地添加變化以得到一個堅實的答案 –

回答

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,現在它包含「key」和「has」之間的詞(以及它們周圍的空白)。希望這可以幫助!

1

要匹配單詞「has」前面的1-3個單詞,您可以使用(\w+){1,3}has

希望這能回答你的問題。這似乎只是你所問的。