【问题标题】:Regular Expression to Remove Subdomains from Domain List从域列表中删除子域的正则表达式
【发布时间】:2013-10-09 11:44:39
【问题描述】:

我有一个存储在 .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

有人可以帮帮我吗?

提前谢谢你。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

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

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

    【讨论】:

    • 这个不适用于包含-的子域,例如my-quest.game.com
    • 替换 - 不是问题的一部分。但是,您可以改用^[\w|-]*\.(?![\w|-]+\s*\n)
    【解决方案2】:

    你可以使用:

    查找内容:[^\r\n]+\.[^.\r\n]+\.[^.\r\n]+[\r\n]+
    替换为:empty_string

    检查正则表达式和未检查点匹配换行

    【讨论】:

      【解决方案3】:

      我建议使用 Notepad++ Find 对话框的 Mark 标签。输入正则表达式^\w+\.\w+\.\w+$,确保选中Bookmark line,然后点击Mark all。接下来,使用菜单 => 搜索 => 书签 => 删除书签行。这些将删除所有包含三个“单词”并由两个点分隔的条目。它将保留所有其他行。

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

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

      【讨论】:

        猜你喜欢
        • 2011-09-19
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 2021-06-05
        相关资源
        最近更新 更多