我正在清理 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(使用前将#替换为@)