替换不包含单引号的双引号
问题描述:
如果使用PCRE未包含单个qoutes,我想用双引号替换双引号。一些实例中,意思是输入=>输出替换不包含单引号的双引号
"foo" => 'foo'
'foo' => 'foo'
abc "foo" => abc 'foo'
foo "bar", "baz" => foo 'bar', 'baz'
abc 'foo "bar" baz' => abc 'foo "bar" baz'
我试图^([^'"]*)"([^'"]*)"
随修饰m multi-line
和“克global`。只要每行不超过一个“xyz”块(第4行中失败),就可以工作。
编辑:我忘了提,我目前的替代是$1'$2'
答
下面该解决方案将只在情况下输入字符串的工作有没有转义序列:
/'[^']*'(*SKIP)(*F)|"/
-
'[^']*'
- 匹配单引号,0+字符而不是单引号e和一个单引号再次 -
(*SKIP)(*F)
- 放弃了比赛,从目前的指数继续PCRE动词序列(你可以在How do(*SKIP)
or(*F)
work on regex? SO post阅读更多的是) -
|
- 或... -
"
- 一个双引号。
如果有转义序列,则需要编写解析器。
试试[''[^'] *'(* SKIP)(* F)|“'](https://regex101.com/r/rR1mA2/1) –
@WiktorStribiżew:太好了,非常感谢这很有效果 – Andy
该解决方案仅适用于输入字符串没有转义序列的情况。是否可以使用单引号进行转义? –