Регулярное выражение URL, пропускающее конечные периоды - PullRequest
1 голос
/ 20 апреля 2019

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

http[s]?://[^\s]+

Кажется, это хорошо работает, за исключением того, что, если URL находится в конце предложения, он также захватит и период. Например, для этой строки:

Я набираю текст с URL http://something.com/something-?args=someargs. Это еще одно предложение.

соответствует:

http://something.com/some-thing?args=someargs.

Я бы хотел, чтобы оно совпадало:

http://something.com/some-thing?args=someargs

Очевидно, что я не могу исключить периоды, потому что они ранее были в URL, но я не могу понять, как сказать, чтобы исключить последний период, если он есть. Я мог бы потенциально использовать отрицательный прогноз для конца строки или пробела, но если бы он был в середине строки (без точки после нее), это бы пропустило последний символ URL.

У большинства из тех, что я видел в Интернете, есть та же проблема, что они соответствуют конечной точке, так что, возможно, это невозможно? Я знаю основные регулярные выражения, но, конечно, не гений в этом, поэтому, если у кого-то есть решение, я был бы очень благодарен:).

Кроме того, в этом случае я могу выполнить некоторую постобработку, чтобы удалить точку, если мне нужно, просто кажется, что должно быть решение Regex ...

1 Ответ

2 голосов
/ 20 апреля 2019

Попробуйте это http[s]?://[^\s]+[^. ]

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