【问题标题】:delete N lines before if find matches in Notepad++如果在 Notepad++ 中找到匹配项,则删除之前的 N 行
【发布时间】:2017-12-26 23:51:07
【问题描述】:

如果使用正则表达式在记事本++中找到匹配项,我想向上删除3行

例子

LINE 1
LINE 2

LINE 3
LINE 4
LINE 5

LINE 6
LINE 7

如果正则表达式匹配LINE 5,则输出必须类似于be

LINE 1
LINE 2



LINE 6
LINE 7

我尝试了许多替换模式但没有成功。请帮我解决这个问题。

【问题讨论】:

  • 你能发布你的正则表达式尝试吗?
  • 记事本++中的@drum 查找列LINE 5替换列\3\r\n

标签: regex text replace notepad++


【解决方案1】:

Regex 101

.*\n.*\nLINE 5

说明

.* matches any character (except for line terminators)
  * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
\n matches a line-feed (newline) character (ASCII 10)
.* matches any character (except for line terminators)
  * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
\n matches a line-feed (newline) character (ASCII 10)
LINE 5 matches the characters LINE 5 literally (case sensitive)

【讨论】:

  • 根据系统的不同,可能需要使用\r\r\n 而不是\n
  • @abc123 感谢您的回复。我想在记事本++中执行此操作,根据您在查找列中使用的答案,在替换列中输入LINE 5 我输入了.*\r\n.*\r\n,但它没有给出预期的结果。
  • @sujin 您应该在 Find 中输入 .*\r\n.*\r\nLINE 5 并将 Replace 留空。
  • 也可以写成(?:.*\n){2}LINE 5,方便维护,比如改变行数和换行符号。
  • 感谢@EganWolf。它工作得很好。 (?:.*\n){2}LINE 5这个很酷。
猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多