如果字符串不包含另一个单词,则正则表达式匹配单词
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.*$
您可以使用 grep
:
轻松实现
grep "\budp\b" | grep -v "\bVPN\b"
我正在寻找匹配特定进程的 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.*$
您可以使用 grep
:
grep "\budp\b" | grep -v "\bVPN\b"