正则表达式 - 如何删除前 10 行/和最后 10 行

Regex - How to delete the first 10 lines / and the last 10 lines

我正在尝试制作一个正则表达式,用 "Search and Replace all"

删除我的 200 个 txt 文件的第一行和最后 10 行

我试过 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。

在 Notepad++ 中,您需要匹配整个文档文本,但只捕获从 11 到末尾的行。

查找: \A.*(?:\R.*){9}\R?([\s\S]*)
替换</code></p> <p>要删除最后 10 行:</p> <p><em>查找</em>: <code>^.*(?:\R.*){9}\z
替换:空

详情:

  • \A - 文档开头
  • .* - 除换行符号(整个第一行)以外的任何零个或多个字符
  • (?:\R.*){9} - 9 个换行符序列 (\R),后跟除换行符以外的任何 0+ 个字符
  • \R? - 一个可选的换行符(如果只有 10 行)
  • ([\s\S]*) - 第 1 组捕获文档的其余部分。

第二个正则表达式:

  • ^ - 行首
  • .* - 行本身到换行符
  • (?:\R.*){9} - 9 行:换行符 + 除换行符字符外的任何 0+ 个字符
  • \z - 文件结束.

是对存储在组 1 中的文本的反向引用。

在 20 多行文档上点击 全部替换 按钮删除前 10 行的结果:

最后 10 行:

只是一个简单的全部替换

(?m)(?:\A(?>^.*\R?){10}|(?>^.*\R?){10}\z)

展开

 (?m)
 (?:
      \A
      (?> ^ .* \R? ){10}
   |  (?> ^ .* \R? ){10}
      \z
 )

如果不支持\R语法,替换为

(?>\r\n|\n|\r|\f|\x0b|\x85) - Ascii
(?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029}) - 统一码