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

Regex Match word if string doesn't contain another word

我正在寻找匹配特定进程的 PCRE 正则表达式,但前提是该进程不包含特定词。

如果字符串包含 'udp',则 REGEX 应该匹配,但如果单词 'vpn' 出现在字符串中的任何位置,则 REGEX 不匹配。

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

因此,如果所述字符串不包含单词 'vpn',它将始终匹配出现 'udp' 的位置。怎么做到这一点?

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

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

DEMO

您可以使用 grep:

轻松实现
grep "\budp\b" | grep -v "\bVPN\b"