案例1)输入: - < p>这是一个示例文本。 http://sydney.edu.au/其他文字。< / p>
必需的输出: - < p>这是一个示例文本。 < a href =“http://sydney.edu.au/”> http://sydney.edu.au/< / a>其他文字。< / p>
案例2)输入: - < p>这是一个示例文本。 sydney.edu.au/ somthing else text。< / p>
必需的输出: - &lt; p&gt;这是一个示例文本。 &LT; a href =“sydney.edu.au /”&gt; sydney.edu.au/< / a&gt;其他文字。&lt; / p&gt;
>> 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提供输出。任何人都可以找到处理这两种情况的方法。
答案 0 :(得分:0)
您的网址匹配正则表达式似乎无效。您可以查看here的正则表达式。
如果您只是想忽略&#34; https:&#34;那么你需要添加&#34;?&#34;用括号表示(https://)? 否则它只会采取&#39; s在https中作为可选项。
由于正则表达式中提到的https和案例2中没有出现,因此CASE2失败
编辑: 写正则表达式以匹配所有类型的网址甚至很难理解。
以下正则表达式很简单,适用于两种情况。
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)