正则表达式需要匹配单词,但不能以任何顺序排除其他单词

时间:2019-02-15 16:43:51

标签: regex pcre

我有以下几行组合:-

WAN-bridge
bridge-WAN
WAN-VLAN
ether1-WAN        <-----
ether2-hello
ether2-wan2        <-----
WAN-BRIDGE
wan-bridge
bridge-wan
vlan918-WAN
VLAN-wan
wan-ether1        <-----
wan-Bridge

我需要一个PCRE正则表达式来匹配任何包含'wan'但不依大小写而以任何顺序排除'vlan'和'bridge'的行。

我已经标记了要匹配的行。

我尝试了很多变化,但都没有奏效。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用

^(?=.*wan)(?!.*(vlan|bridge)).*$
  • ^-字符串的开头。
  • (?=.*wan)-正向前进。 wan的条件必须符合条件。
  • (?!.*(vlan|bridge))-前瞻性否定。 vlan and bridge的条件不能符合条件。
  • .*-匹配除换行以外的所有内容。
  • $-字符串的结尾。

Demo