Regex 在Python中查找http链接并放置在标记之间?

Regex 在Python中查找http链接并放置在标记之间?,regex,python-3.x,Regex,Python 3.x,我是Python的新手(我正在使用Python 3.7)。我正在尝试创建一个脚本,从网页中删除一些文本,将其从标记中清除,并制作成可读的文档。我想找到所有链接(以“http”开头)并将它们放在一对标记TeX\textbf{and}之间,这样这些链接在最终文档中以粗体显示。 我找到了一段代码来查找以特定字符开头的单词 >>> import re >>> text = "Lorem ipsum text lorem ipsum text http:\\link.

我是Python的新手(我正在使用Python 3.7)。我正在尝试创建一个脚本,从网页中删除一些文本,将其从标记中清除,并制作成可读的文档。我想找到所有链接(以“http”开头)并将它们放在一对标记TeX\textbf{and}之间,这样这些链接在最终文档中以粗体显示。 我找到了一段代码来查找以特定字符开头的单词

>>> import re
>>> text = "Lorem ipsum text lorem ipsum text  http:\\link.xyz some random text here."
>>> re.findall(r'\[h]\w+', text)
我想得到的是:

>>> text = "Lorem ipsum text lorem ipsum text  \textbf{http:\\link.xyz} some random text here."

抱歉,代码示例很笨拙。非常感谢您的帮助

将来自的正则表达式与方法缝合在一起(并将链接固定为使用正确的斜杠),我们可以看到:

>>> import re
>>> link_finder = re.compile(r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b(?:[-a-zA-Z0-9@:%_\+.~#?&//=]*)")
>>> text = "Lorem ipsum text lorem ipsum text  http://link.xyz some random text here."
>>> link_finder.sub(lambda link_match: "\\textbf{{{0}}}".format(link_match.group(0)), text)
'Lorem ipsum text lorem ipsum text  \\textbf{http://link.xyz} some random text here.'

请注意,双反斜杠是一种格式(转义)详细信息,不会显示在输出中。

这些链接将有所帮助:带有
re
的代码表示您正在寻找正则表达式。在这个链接上,你可以得到所有的url,然后在开头追加
\textbf{
,然后在结尾追加
}
。谢谢你的回答!请问“lambda函数”在该代码中的作用是什么?
sub
将匹配文本替换为提供的字符串或函数结果(lambda)。lambda接受将被替换的
re.Match
。在本例中,匹配的文本用作返回值的一部分,然后将返回值放入原始字符串中。