使用Notepad ++我想找到以expr(
开头并以最近的)
结尾的字符串中的所有双引号,例如
expr("hi","",0)
以单引号替换它们,如下所示
expr('hi','',0)
这个字符串可以在较长的文本中找到几次,如
bla="asd" expr("hello","",0) something something expr("bye","",0) something "later" etc
我试过几个正则表达式无济于事,比如
(?<=expr\()("*?)(?=\))
我需要在几个文件中执行此操作,这就是我使用Notepad ++的原因。
这有可能吗? 请帮忙。
答案 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 }})\\.
- 双引号见截图: