我需要的是一个正则表达式,只选择不被单引号包围的双引号。(这是为了快速将双引号重构为单引号而不破坏任何嵌套字符串)。
示例(与此处相同):
"foo" => 'foo'
'foo' => 'foo'
abc "foo" => abc 'foo'
foo "bar", "baz" => foo 'bar', 'baz'
abc 'foo "bar" baz' => abc 'foo "bar" baz'
在查找这个问题时,我能够找到如何在PCRE中实现此功能,但我无法想出如何将
(*SKIP)(*F)
转换为可用的JavaScript Regex。我的JavaScript尝试是:
/(?:('.*["].*')|")/g
(演示)。第一个模式
/'.*["].*'/
可以很好地匹配我最终想要排除的内容('foo "bar" baz'
),但我不确定如何告诉表达式,如果匹配了它,则将其排除。我已经尝试使用
(?!)
表达式进行操作,但没有成功。如果有人有关于如何编写更好的正则表达式或解决问题的替代方案的想法,我会感激不尽。
编辑:
作为附加信息,这些正则表达式被用于WebStorm / PHPStorm中的搜索和替换功能以重构源代码。
(*SKIP)(*FAIL)
机制,这将会容易得多。 - JanPHPStorm
可能没有(未经测试)。 - Jan