正则表达式匹配单词,如果字符串不包含另一个单词

时间:2015-08-19 07:50:15

标签: regex string pcre

我正在寻找能够匹配某些流程的PCRE正则表达式,但前提是该流程不包含特定字词。

如果字符串包含' udp'则REGEX应匹配但是,如果“' vpn'发生在字符串中的任何位置

Example:
    /root/sumcommand -x -y udp 
    MATCH 

    /root/sumcommand VPN udp 12 4 2
    NO MATCH

    /root/sumcommand -x -y udp VPN 2 4 52
    NO MATCH

    /root/sumcommand udp ocean tools 1 5 2
    MATCH

所以它始终与“udp'如果所述字符串不包含单词' vpn'则会出现。怎么会这样做?

2 个答案:

答案 0 :(得分:4)

您可以尝试以下基于正则表达式的正则表达式。

(?i)^(?!.*\bvpn\b).*\budp\b.*$

DEMO

答案 1 :(得分:0)

您可以使用grep

轻松实现这一目标
grep "\budp\b" | grep -v "\bVPN\b"