正则表达式从域列表中删除子域

时间:2013-10-09 11:44:40

标签: regex notepad++

我有一个存储在.txt文件中的域名和子域列表(我使用的是Windows XP)。

域的格式是:

  

somesite1.com

     

sub1.somesite1.com

     

sub2.somesite1.com

     

somesite2.com

     

sub1.somesite2.com

     

sub2.somesite2.com

     

somesite3.com

     

sub1.somesite3.com

     

sub2.somesite3.com

我使用notepad ++,我需要使用正则表达式

无论如何,我不知道在发现和放置什么?替换框,以便它可以浏览文件的内容,只留下根域。如果操作正确,它会将上面的示例列表转换为:

  

somesite1.com

     

somesite2.com

     

somesite3.com

有人可以帮帮我吗?

提前谢谢。

3 个答案:

答案 0 :(得分:0)

我建议使用Notepad ++ 查找对话框的标记标签。输入正则表达式^\w+\.\w+\.\w+$,确保选中书签行,然后点击全部标记。接下来,使用Menu => 搜索 => 书签 => 删除已添加书签的行。这些将删除具有由两个点分隔的三个“单词”的所有条目。它将使所有其他线路保持原位。

另一种方法是标记与正则表达式^\w+\.\w+$匹配的所有行,并使用删除未标记的行菜单项。我不建议这样做,因为它将删除具有意外格式的所有行以及子域的行。

另一种方法是使用Notepad ++ 查找对话框的替换标签。在查找内容字段中输入正则表达式^\w+\.\w+\.\w+\r\n,并将替换为字段留空。此表达式的\r\n部分可能需要进行一些调整以考虑文件上设置的行结尾。

答案 1 :(得分:0)

您可以使用:

找到:[^\r\n]+\.[^.\r\n]+\.[^.\r\n]+[\r\n]+
替换为:empty_string

选中正则表达式并且未选中点匹配换行

答案 2 :(得分:0)

这是一个老问题,但所提供的答案对我来说并不起作用。你需要一个消极的向前看。正确的正则表达式是:

^\w*\.(?!\w+\s*\n)