我有两种情况,我卡住了。
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)