从列表中的根域删除子域的正则表达式-记事本++或Gvim [英] Regular Expression to Remove Subdomain from Root Domain in List - Notepad++ or Gvim

查看:14
本文介绍了从列表中的根域删除子域的正则表达式-记事本++或Gvim的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个.txt文件中存储的URL列表(我使用的是Windows 7)。

URL的格式为:

somesite1.com
somesite2.com
somesite3.com
sub1.somesite3.com
sub2.somesite3.com
sub3.somesite3.com
sub1.somesite3.net
sub1.somesite1.org

在Notepad++中,有一个使用"查找-替换为正则表达式"的选项,我非常确定gvim允许用户使用正则表达式(虽然我不完全确定如何在Gvim中使用它们)。

不管怎样,我不知道应该在"查找和替换"框中放入什么内容,这样它才能浏览文件内容,只留下根域。如果操作正确,它将把上面的示例列表变成这样:

somesite1.com
somesite2.com
somesite3.com
somesite3.com
somesite3.com
somesite3.com
somesite3.net
somesite1.org

有人能帮帮我吗?

推荐答案

VIM有几种方式(尾部斜杠也是可选的):

:%s/^.+.ze[^.]+.[^.]+$//
:%s/^.+.([^.]+.[^.]+)$/1/
另请参阅:help /ze等。zezs是特定于Vim的,非常有用。在Vim和PCRE中也有可能有用的前瞻和后视断言。

我相信Notepad++使用PCRE;查找^.+.([^.]+.[^.]+)$并将其替换为1应该可以(但我不使用Notepad++)。

请注意,这不适用于使用第三级注册的国家代码顶级域-example.com.au将变为com.au。然后还有一些国家在一定的规则下使用第二级或者三级注册.如果您关心这些情况,您将需要更多的规则,并且完整的解析器将比正则表达式更整洁(尽管使用正则表达式通常可以做到这一点)。

这篇关于从列表中的根域删除子域的正则表达式-记事本++或Gvim的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆