清洁正则表达式的唯一解决方案

清洁正则表达式的唯一解决方案

我有一个文本文件,想保留以 开头的行<Path>,并删除所有其他行。

我该怎么做?

答案1

有一个简单的方法可以实现这一点。您需要执行 2 个步骤。

  1. 转到“搜索”菜单 > 查找... > 选择“标记”选项卡。激活正则表达式。搜索^<Path>^表示行首)。不要忘记勾选“为行添加书签”并按“标记全部”

    ==> 您想保留的所有行都有书签

  2. 转至菜单“搜索 - 书签 - 删除未标记的行”

    ==> 所有未加书签的行都将被删除。

答案2

从 6.3 开始,这实际上可以分两步完成。我认为可以更早完成,因为我第一次尝试时使用的是 5.9。

使用 stema 的帖子作为此答案的基础。现在少了一个步骤。标记线条并删除未标记的线条。完成。详细说明如下。

  1. 搜索菜单“查找”。在“查找”对话框中,单击“标记”选项卡。激活正则表达式。搜索^<Path>^表示行首)。不要忘记勾选“为行添加书签”并按“标记全部”

    ==> 您想要保留的所有行现在都有书签

  2. 搜索菜单 -> 书签 -> 删除未标记的行。

    ==> 全部已添加书签的行已被删除。

答案3

清洁正则表达式的唯一解决方案

两步变体

  1. 正则表达式替换

    (?!^.*test.*$)^.+
    

    用您请求的文本替换测试

  2. 代替

    [\r\n]{2,}
    

    \r\n

单步变体

用于^(?!<Path>).*\r\n用空字符串替换匹配项。通用版本为^(?!.*?test).*\r\n这不会删除文件末尾的空行。所有其他行都会被删除,包括多个连续的空行。

解释:

  1. (?!)是负面查找。^.*test.*$ 选择包含所请求文本的整行。

  2. [\r\n]{2,}匹配任何\r\n出现超过一次的字符,这是 Windows 的新行。如果您有 Linux 或其他操作系统,您可能需要处理这个问题。第二种方法是用一个回车线替换它。

答案4

使用正则表达式替换的更好的解决方案:

(?!^.*SOMETEXT.*$)^.+\r?\n

并替换为空

相关内容