删除所有内容,每行除一个单词外

时间:2020-10-10 03:42:51

标签: regex notepad++

我正在尝试找到一种正则表达式解决方案,以保留&#xA;并删除其他内容而不会破坏行顺序。只有某些行包含此模式一次或多次。我尝试了(?<=&#xA;)(.+)|(.+)(?=&#xA;)|^((?!&#xA;).)*$,但尽管其中包含更多行,但每行仅保留一个行。例如,我有这样的东西:

The client requires photos of a radioactive world&#xA;Reach the target planet.
The client requires photos.&#xA;&#xA;Reach the target planet.
The client requires photos of a desert world&#xA;Reach the target planet.
The client requires photos of an airless world. Reach the target planet.
The client requires photos of a strange world&#xA;&#xA;Reach the target planet&#xA;Make a quick scan.

正是如此:

&#xA;
&#xA;&#xA;
&#xA;

&#xA;&#xA;&#xA;

如果您有帮助,我会很高兴。

3 个答案:

答案 0 :(得分:1)

您可以使用以下RegEx匹配除&#xA以外的所有内容

[^&#xA;\n]+

Demo

答案 1 :(得分:1)

您可以使用捕获组。

(.*?)((?:&#xA;){0,})

详细信息:

  • (.*?):Group1-尽可能少匹配任何字符
  • ((?:&#xA;){0,}):第2组-是否匹配&#xA;

Demo

答案 2 :(得分:1)

您可以使用SKIP FAIL来匹配&#xA;,然后再不使用匹配项。

然后匹配除&以外的所有字符,当它遇到&时,断言它没有直接跟在#xA;

之后

查找内容

&#xA;(*SKIP)(*FAIL)|[^&\r\n]+(?:&(?!#xA;)[^&\r\n]*)*

替换为:

留空

说明

  • #xA;字面上匹配
  • (*SKIP)(*FAIL)|消耗要避免的字符
  • [^&\r\n]+匹配除&或换行符以外的任意字符1倍以上
  • (?:非捕获组
    • &(?!#xA;)匹配&,如果不紧跟#xA;
    • [^&\r\n]*匹配除char或换行符以外的任意字符0+次
  • )*关闭非捕获组并重复0次以上

Regex demo

enter image description here