Проверьте, находится ли URL в предложении с регулярным выражением - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужно проверить, есть ли URL в предложении.

Some text. This is good. 
https://stackoverflow.com
More text

More text https://stackoverflow.com. More text. This is bad

Я могу найти URL-адреса после некоторого исследования, но я застрял в поиске их в предложениях.

https://regex101.com/r/AmuFIX/5

((http|ftp|https):\/\/)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)[\r\n]

1 Ответ

2 голосов
/ 17 апреля 2020

Судя по комментариям, вы ищете случаи, когда URL-адрес смешивается с другим текстом в строке , а не обязательно предложением . Для этого я бы использовал что-то вроде этого:

.+\b((http|ftp|https):\/\/)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)\b.+

Это меняет ваш запрос, утверждая, что должно быть несколько символов, за которыми следует граница слова, затем URL, затем граница слова и затем некоторыми другими персонажами. Это не будет соответствовать URL в начале или конце строки, которая также имеет другой контент; для этого вам, вероятно, понадобится два двух разных соответствия - одно для URL с чем-то перед ним, другое для URL с чем-то после него.

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