Как я могу написать противоположное регулярное выражение к этому регулярному выражению? - PullRequest
0 голосов
/ 29 января 2019

это регулярное выражение прокси, если я добавлю это в свой прокси:

(.*\.|)(abc|google)\.(org|net)

мой прокси не будет передавать abc.org, abc.net, google.org, google.net 's трафик.

как я могу написать регулярное выражение напротив этого регулярного выражения?Я имею в виду только передать abc.org, abc.net, google.org, google.net.


EDIT-01

Мои мыслипросто хочу передать abc.org или www.abc.org, как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Попробуйте это:

^(?!(www\.)?(?:abc|google)\.(?:net|org)).*

Демонстрация: https://regex101.com/r/WOnFx8/3/

Я использовал ?!, чтобы отменить соответствие вашего регулярного выражения.Таким образом, он будет соответствовать любому домену, кроме этих 4 определенных доменов.

Другой способ сделать это - использовать этот код для включения чего-либо перед желаемыми доменами:

^(?!(.*\.|)(?:abc|google)\.(?:net|org)).*

demo: https://regex101.com/r/WOnFx8/4/

0 голосов
/ 29 января 2019

Ваше регулярное выражение, которое вы пишете

(. * \. |) (Abc | google) \. (Org | net)

означает, что любая строка является одной из следующихabc.org, gooogle.org, abc.net, google.net, с необязательным префиксом строка заканчивается точкой (.) Например: test.google.org, sub.abc.net, ...

Iдумаю, что вы хотите сопоставить строку, как test.yahoo.com, но не test.google.org.Если вы можете использовать отрицательный взгляд вперед, это ответ:

^ (. * \. |) (?! (abc | google)\. (org | net) ) \ w + \. \ w + $

Объясните:

  • ^ и $ , чтобы убедиться, что ваш поиск соответствует всей строке URL
  • Отрицательный взгляд в будущее - проверить, что URL не похож на abc.org, abc.net, google.org, google.net
  • И \ w + \. \ W + для проверки оставшейся строки является своего рода типом URL (что-то вроде yahoo.com и т. Д.)
0 голосов
/ 29 января 2019

Я собираюсь предположить, что у вас есть предвидения, если это так, то вы можете просто использовать -

(^.*?\.(?!(abc|google))\w+\.(?:org|net)$)

Демо - https://regex101.com/r/5eC41R/3

Что это делает -

  1. Ищет начало URL (до первого .)
  2. Проверяет, что следующая часть не abc или google
  3. ищет следующий раздел (доследующий .)
  4. Ищет закрытие org или net

Обратите внимание, что, поскольку это прогноз, он будет медленным по сравнению с другими совпадениями регулярных выражений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...