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

时间:2016-12-31 13:41:36

标签: regex text notepad

我正在尝试使用“搜索并全部替换”来删除我的200个txt文件的第一行和最后10行的正则表达式

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

2 个答案:

答案 0 :(得分:4)

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

查找\A.*(?:\R.*){9}\R?([\s\S]*)
替换$1

删除最后10行:

查找^.*(?:\R.*){9}\z
替换:空

<强>详情:

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

第二个正则表达式:

  • ^ - 开始行
  • .* - 直线换行的行本身
  • (?:\R.*){9} - 9行:换行符+除换行符之外的任何0 +字符
  • \z - 文档的结尾

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

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

enter image description here

最后10行:

enter image description here

答案 1 :(得分:0)

使用此

进行简单的全部替换

(?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}) - Unicode