给出以下字符串,如何将其拆分为仅包含双引号字符串(忽略嵌套的带引号字符串)而不使用后置断言的数组?
源字符串:1|2|3|"A"|"B|C"|"\"D\"|\"E\""
目标数组:
[
'"A"',
'"B|C"',
'"\"D\"|\"E\""'
]
基本上,我正在尝试寻找/(?<!\\)".*?(?<!\\)"/g
的替代方法,因为Firefox当前不支持后向隐藏。该解决方案不必使用正则表达式,但是应该相当有效。
答案 0 :(得分:0)
只需找到所有引用的文字/"[^"\\]*(?:\\[\S\s][^"\\]*)*"/g
不需要为此。
https://regex101.com/r/r5SJsR/1
格式化
"
[^"\\]* # Double quoted text
(?: \\ [\S\s] [^"\\]* )*
"
答案 1 :(得分:0)
简单的正则表达式/"[^\\"]+"|"\S*"/g
怎么样。
"A"'
覆盖了前两组("B|C"
和"[^\\"]+"
)-任何不是反斜杠或包含在一组引号内的引号的内容|
)将两个条件分隔开"\"D\"|\"E\""
)简单地用"\S*"
覆盖-包装在一组引号内的任何非空格这将返回与您最初的正则表达式相同的结果,没有回味,可以在 Regex101 here 上看到。