通过RegEx消除(多个)子域

时间:2016-06-03 21:18:35

标签: regex

我试图从列表中删除(有时是多个)子域名,因此我只剩下域名加上TLD或ccTLD

......中的示例数据

something1.something2.example.com
something3.something3.example.co.uk
www.example.net
random.something.else.example.cc

示例数据输出......

example.com
example.co.uk
example.net
example.cc

我尝试过的......

^.*(?!(?<=\.))\..*\.{2,3}$

是否有功能或更好(工作)的方式来做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您只是想匹配相关数据,请不要从行首开始进行匹配:

[^.]*(\.[^.]{2,3}){1,2}$

regex101上试用。

如果要替换行,请将所有行分组并从行首开始选择所有内容:

^.*?([^.]*(\.[^.]{2,3}){1,2})$

然后用第一个反向引用替换。

regex101上试用。

请注意,无法区分3个字母或更少的域名与ccTLD(除非您要全部列出),因此可能无法在这些域名上显示正确的数据。 例如,使用&#34; this.may.bug.com&#34;它将匹配&#34; may.bug.com&#34;而不是预期的&#34; bug.com&#34;。