使用Python中的正则表达式的链接替换URL(Replace URL with a link us

2019-06-25 14:54发布

我该如何将一些文本链接? 早在PHP中,我用这段代码,对于我的目的运作良好:

            $text = preg_replace("#(^|[\n ])(([\w]+?://[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\3</a>", $text);
            $text = preg_replace("#(^|[\n ])(((www|ftp)\.[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\3</a>", $text);

我试着在周围的Python,但无法得到它的工作..将是非常好的,如果有人可以翻译这个到Python :) ..

Answer 1:

下面的代码是一个简单的翻译到Python。 你应该确认它实际上是你想要做什么。 欲了解更多信息,请参阅Python的正则表达式HOWTO 。

import re

pat1 = re.compile(r"(^|[\n ])(([\w]+?://[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)", re.IGNORECASE | re.DOTALL)

pat2 = re.compile(r"#(^|[\n ])(((www|ftp)\.[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)", re.IGNORECASE | re.DOTALL)


urlstr = 'http://www.example.com/foo/bar.html'

urlstr = pat1.sub(r'\1<a href="\2" target="_blank">\3</a>', urlstr)
urlstr = pat2.sub(r'\1<a href="http:/\2" target="_blank">\3</a>', urlstr)

print urlstr

下面是输出的样子在我结束:

<a href="http://www.example.com/foo/bar.html" target="_blank">http://www.example.com</a>


文章来源: Replace URL with a link using regex in python