要检查它是否是文本中的URL,如果是,则使用href标签编辑它



我有两种情况,我卡住了。

CASE 1)输入:-

要求输出:- <这是一个示例文本。&> http://sydney.edu.au/其他文本。

CASE 2)输入:-

要求输出:- <这是一个示例文本。&> sydney.edu.au/& lt;/a>其他文本。

我试过下面的代码:

>> item = "< p >This is a sample text. http://sydney.edu.au/ somthing else text.< /p >"
>> import re
>> r = re.compile(r"(https?://[^ ]+)")
>> newstr = r.sub(r'<a href="1">1</a>', item)

这给出了CASE 1的输出,但不是CASE 2的输出。有谁能找出同时处理这两种情况的方法吗?

您的url匹配正则表达式似乎无效。你可以在这里查看正则表达式。

如果你只是想忽略"https:",那么你需要添加"?"与括号即(https://)?否则,它将把HTTPS中的's'作为可选选项。

由于在正则表达式中提到了https,而在情况2中不存在,因此CASE2

失败

编辑:编写匹配所有url类型的正则表达式是非常困难的,甚至很难理解。

下面的正则表达式是一个简单的,适用于这两种情况。

import re
input = "< p >This is a sample text. sydney.edu.au/ somthing else text.< /p >"
regex = "((?:https?://)?(?:www.)?[a-zA-Z]+.[a-z]+[^ ]*)"
re.sub(regex, '<a href=\1>\1</a>', input)

最新更新