实际上,您可以匹配一个正则表达式的所有实例,而不是将它们匹配在任何字符串的引号内,因为每个字符串都被再次关闭。像上面的示例一样,您要匹配
+。
此处的主要观察结果是,如果单词后面有偶数个引号,则该单词在引号之外。可以将其建模为先行断言:
+(?=([^"]*"[^"]*")*[^"]*$)
现在,您不想计算转义引号。这变得更加复杂。
[^"]*您需要同时考虑反斜杠并使用,而不是将其引至下一个引号
[^"\]*。到达反斜杠或引号后,如果遇到反斜杠,则需要忽略下一个字符,否则前进到下一个未转义的引号。看起来像
(\.|"([^"\]*\.)*[^"\]*")。结合起来,您到达
+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)



