在python中使用正则表达式将URL替换为链接

发布于 2021-01-29 15:05:38

如何将某些文本转换为链接?回到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 :)。

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    下面的代码是对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>
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看