删除每行中两个字符之间的所有内容

时间:2017-10-11 15:59:04

标签: regex text notepad++

对于每一行,如何删除"第5次出现与.最后次出现之间的所有内容,不包含?要删除的部分包含任何有问题(对于正则表达式)字符的数字和变量模式,例如:/\()[]|.,?"等。

例如:

"123456789","xyxyxy","DELETE///.T.H.I.S.aaa"
"123","abc","DELETE."\T.H.I.S\[.]".1234"

"123456789","xyxyxy",".aaa"
"123","abc",".1234"

我一直都在失败(可能是因为有问题的字符的错误转义?)。

2 个答案:

答案 0 :(得分:1)

不确定它是否与notepad ++兼容,但这个正则表达式应该可以完成它的工作:

((?:"[^"]*){4}").*(\..*)

替换:

\1\2

示例和说明:https://regex101.com/r/yBuUOj/3

答案 1 :(得分:1)

试试这个正则表达式: ((?:[^"\n]*"){5})(.*)(\..*)$

Click for Demo

<强>解释

  • ^ - 断言字符串的开头
  • (?:[^"\n]*") - 匹配0 +出现的任何字符,既不是"也不是换行符,后面跟着"
  • {5} - 重复上述比赛5次。到目前为止匹配的所有内容都在第1组中捕获。
  • (.*) - 匹配并捕获任何字符贪婪的0次出现,但不是新行字符。存储的是group2。这部分将在以后删除/删除。贪婪的比赛,因为我们现在想要到达最后.。我们可以通过回溯(在下一步中)到达那里
  • (\..*) - 匹配一个点后跟0次出现的任何字符,但换行符并存储在第3组
  • $ - 断言字符串的结尾

<强>输出:

替换之前:

enter image description here

更换后:

enter image description here