最简单的正则表达式成功处理纯文本链接:
r'(https?://[\S]+)'
一切都适合它,但有时 html 到达,有必要将链接与标签隔离开来a。如果有类似的东西some text <a href="http://ya.ru">some text进来,结果将是:http://ya.ru>some
这是一个表达式:
r'(https?://[\S]+[>$])'
返回可接受的结果(末尾带有字符的链接>,然后可以简单地将其切断),但不再处理纯文本链接。
在Python中如何将这两个表达式合二为一,使用OR原理,一个一个地得到所有的匹配项?
试过了()|()- 它不起作用。第三方库在这个任务上做得很好,但是需要通过最简单的正则表达式来达到预期的结果。
最简单的:
但它也会寻找无效链接。例如:https://.-ya_.5 如果您确定文本中链接的有效性,那么它是一个非常有效的选项。
这是它应该如何工作,试试看:
如果你想从 html 中获取链接,那么你应该使用 html 解析器。例如,美丽的汤:
一般来说,正则表达式不适合 html 识别,即使在可以使用正则表达式的情况下,它也可能不是最佳选择。