如何用正则表达式替换所有.com结尾站点 仅保留crypto.com
正则匹配排除指定域名的实现方案
你现有正则的逻辑完全写反了:你写的规则是匹配crypto.com,调用替换方法后会删掉你要保留的内容,自然无法匹配其他需要删除的.com站点。
你要实现「删除所有.com结尾的站点、仅保留crypto.com」的需求,用负向先行断言排除要保留的域名即可,正确的正则规则如下:r"\b(?!crypto\.com)\w+\.com\b"
规则说明:
\b匹配单词边界,避免误匹配到嵌入在其他单词里的域名片段(?!crypto\.com)是负向先行断言,代表接下来的内容不能是crypto.com,符合这个条件才会继续匹配\w+\.com匹配任意由字母、数字、下划线组成前缀加.com后缀的域名- 末尾的
\b保证匹配到的是完整域名,不会只匹配域名的一部分
对应的测试代码如下:
import re text = "我最喜欢的站点包括:crypto.com、polo.com、cryp.com和google.com" text = re.sub(r"\b(?!crypto\.com)\w+\.com\b", '', text) print(text)
运行后输出结果为:
我最喜欢的站点包括:crypto.com、、和
如果是你示例里的英文原句,运行后输出就是你需要的Here are my favorite things: crypto.com,, and ,完全符合预期。
内容的提问来源于stack exchange,提问作者Jauhnax
相关产品推荐
相关产品推荐

