正则表达式替换匹配并删除不匹配

时间:2012-10-25 11:42:10

标签: regex

有没有办法替换部分匹配的行并使用Notepad ++替换工具只用一个查询删除所有不匹配的行?

例如: (引号中的字符串应替换为123)
输入:

There is line with "quoted" part
There is another line

预期结果:

There is line with "123" part

2 个答案:

答案 0 :(得分:1)

作为模式使用

([^"]*?)^(.*?)".*?"(.*)([^"]*$)

并作为替代用途

$2"123"$3

答案 1 :(得分:-1)

我最好的一击:

查找

(^[^\r\n]*?)("quoted")([^\r\n]*?)$((\r\n)?(?![^\r\n]*?"quoted"[^\r\n]*?$).*?$)+

替换为

$1"123"$3

对于""Ωmega答案之间的每个模式都很好,这个模式可以让你替换特定的模式而不是引号之间的所有模式。

说明:

  • (^[^\r\n]*?):查找没有换行符(非贪婪)的任何字符序列
  • ("quoted"):后跟“quoted”
  • ([^\r\n]*?)$:直到最后一行
    • ((\r\n)?:我们在新的一行
    • (?![^\r\n]*?:向前看(负面)以避免非换行字符序列
    • "quoted"[^\r\n]*?$):后跟“quoted”
  • .*?$)+:一次或多次

在np ++ v6.1中测试