删除文本中的标记链接

2024-01-06

我正在清理 Reddit 上的一些文本。当您在 Reddit 自文本中包含链接时,您可以这样做:[the text you read](https://website.com/to/go/to)。我想使用正则表达式删除超链接(例如https://website.com/to/go/to)但保留the text you read.

这是另一个例子:

[the podcast list](https://www.reddit.com/r/datascience/wiki/podcasts)

我想保留:the podcast list.

我怎样才能用Python做到这一点re图书馆?合适的正则表达式是什么?


我已经对您请求的正则表达式进行了初步尝试:

(?<=\[.+\])\(.+\)

第一部分(?<=...)是look back,意思是查找但不匹配。您可以将此正则表达式与re的方法子 https://docs.python.org/3/library/re.html#re.sub。您还可以查看所有正则表达式符号的含义here https://docs.python.org/3/library/re.html#regular-expression-syntax.

您可以扩展上面的正则表达式以仅查找括号中具有网络链接的内容,如下所示:

(?<=\[.+\])\(https?:\/\/.+\)

这样做的问题是,如果他们提供的链接不是以 http 或 https 开头,它将失败。

之后,您需要删除方括号,也许删除所有方括号就可以了。


Edit 1:

瓦伦蒂诺指出替代接受捕获组,它允许您捕获文本并使用以下正则表达式替换文本:

\[(.+)\]\(.+\)

然后,您可以使用以下命令替换第一个捕获的组(在方括号中):

re.sub(r"\[(.+)\]\(.+\)", r"\1", original_text)

如果您想更详细地了解正则表达式(如果您是正则表达式的新手或想了解它们的含义),我会推荐在线正则表达式解释器 https://regexr.com/,它们解释了每个符号的作用,并且使其更易于阅读(特别是当有很多像这里这样的转义符号时)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除文本中的标记链接 的相关文章

随机推荐