查找括号之间的所有双引号,前面是特定表达式

时间:2017-01-13 11:16:52

标签: regex notepad++

使用Notepad ++我想找到以expr(开头并以最近的)结尾的字符串中的所有双引号,例如

expr("hi","",0)

以单引号替换它们,如下所示

expr('hi','',0)

这个字符串可以在较长的文本中找到几次,如

bla="asd" expr("hello","",0) something something expr("bye","",0) something "later" etc

我试过几个正则表达式无济于事,比如

(?<=expr\()("*?)(?=\))

我需要在几个文件中执行此操作,这就是我使用Notepad ++的原因。

这有可能吗? 请帮忙。

1 个答案:

答案 0 :(得分:1)

您的正则表达式仅匹配紧跟expr(之前的0 +双引号,后紧跟)

我建议使用以下正则表达式:

(?:\G(?!^)\s*,\s*|\bexpr\()\s*\K"((?:[^"\\]|\\.)*)"

并替换为'$1'

<强>详情:

  • (?:\G(?!^)\s*,\s*|\bexpr\() - 整个字expr(\bexpr\()或上一次成功匹配的结尾+用0+空格括起来的逗号(\G(?!^)\s*,\s*
  • \s* - 0+ whitespaces
  • \K - 省略了目前为止匹配的文字
  • " - 双引号
  • ((?:[^"\\]|\\.)*) - 第1组捕获双引号字符串文字(除"\以外的0 +字符(带[^"\\])或任何转义序列({{1 }})
  • \\. - 双引号

见截图:

enter image description here