Skip to main content
 首页 » 编程设计

regex之Notepad++ 正则表达式组捕获

2024年05月29日16jirigala

我有这样的txt文件:

ххх.prontube.ru 
salo.ru 
bbb.antichat.ru 
yyy.ru 
xx.bb.prontube.ru 
zzz.com 
srfsf.jwbefw.com.ua 

尝试删除具有此类正则表达式的所有子域:

Find:    .+\.((.*?)\.(ru|ua|com\.ua|com|net|info))$ 
Replace with: \1 

接收:

prontube.ru 
salo.ru 
antichat.ru 
yyy.ru 
prontube.ru 
zzz.com 
com.ua 

为什么最后一行变成com.ua而不是jwbefw.com.ua

请您参考如下方法:

无需环顾四周即可工作:

查找:[a-zA-Z0-9-.]+\.([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+) $ 替换:\1\.\2

它找到至少有 2 个句点的内容,并且最后两个句点后面仅包含字母、数字和破折号;然后它用最后两个部分替换它。我认为更直观。

领先的 xxx 发生了一些有趣的事情。它似乎不是纯 ASCII。为了这个问题,我假设这只是这个网站的一些有趣的事情,并不代表您的真实数据。

不正确

有趣的是,我之前在这里有一个错误的答案,但积累了很多赞成票。所以我认为我应该保留它:

查找:[a-zA-Z0-9-]+\.([a-zA-Z0-9-]+)\.(.+)$ 替换:\1\.\2

它只是找到一个至少包含 2 个句点的主机名,然后将其替换为第一个点之后的所有内容。