Я пытаюсь использовать регулярное выражение и извлечь некоторые URL-адреса из большого текстового файла. Большинство URL-адресов не имеют привязанного к ним HTTP / HTTPS, поэтому это значительно усложняет задачу.

Если я хочу использовать регулярное выражение для URL-адресов, содержащих «.co», я сделал это так, чтобы регулярное выражение находило «.co» и выбирало из первого пробела перед вхождением и из первого пробела после вхождения, используя:

(\S+\.co\S+)

Но проблема возникает, когда у меня есть URL-адреса с доменом верхнего уровня .com в файле.

Например, это регулярное выражение выбирает все URL-адреса снизу, а не только URL-адреса ".co".

pizza.com/test is good 
pizza.co/test is great

Выдержки регулярных выражений:

pizza.com/test
pizza.co/test

Я только хочу, чтобы он извлек:

pizza.co/test

Вот мой пример регулярного выражения: https://regexr.com/5hl2h

Кто-нибудь знает, как я могу добиться этого с помощью регулярного выражения? Или стоит поискать альтернативное решение?

Большое спасибо за помощь здесь.

0
Jason Waltz 4 Дек 2020 в 10:10

1 ответ

Лучший ответ

Вы могли бы использовать

\S+\.co(?!m)\S*

Объяснение

  • \S+ Соответствует 1+ непробельным символам
  • \.co(?!m) Соответствует .co, за которым непосредственно не следует m
  • \S* Соответствует 0+ непробельных символов, чтобы они также соответствовали заканчивающимся на .co

Regex demo

0
The fourth bird 4 Дек 2020 в 07:21