我正在尝试找到一种正则表达式解决方案,以保留

并删除其他内容而不会破坏行顺序。只有某些行包含此模式一次或多次。我尝试了(?<=
)(.+)|(.+)(?=
)|^((?!
).)*$
,但尽管其中包含更多行,但每行仅保留一个行。例如,我有这样的东西:
The client requires photos of a radioactive world
Reach the target planet.
The client requires photos.

Reach the target planet.
The client requires photos of a desert world
Reach the target planet.
The client requires photos of an airless world. Reach the target planet.
The client requires photos of a strange world

Reach the target planet
Make a quick scan.
正是如此:











如果您有帮助,我会很高兴。
答案 0 :(得分:1)
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以使用SKIP FAIL来匹配

,然后再不使用匹配项。
然后匹配除&以外的所有字符,当它遇到&时,断言它没有直接跟在#xA;
查找内容

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