Regex Необходимо сопоставить слово, но исключить другие слова в любом порядке - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть следующая комбинация строк: -

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 голосов
/ 15 февраля 2019

Вы можете использовать это

^(?=.*wan)(?!.*(vlan|bridge)).*$
  • ^ - начало строки.
  • (?=.*wan) - позитивный прогноз.условие для wan должно быть в строке.
  • (?!.*(vlan|bridge)) - отрицательный прогноз.условие vlan and bridge не должно быть в строке.
  • .* - сопоставить что-либо, кроме новой строки.
  • $ - конец строки.

Демо

...