繁体   English   中英

RegExp后置断言替代

[英]RegExp lookbehind assertion alternative

给定下面的字符串,如何将其拆分为仅包含双引号字符串(忽略嵌套的带引号的字符串)而不使用后向断言的数组?

源字符串: 1|2|3|"A"|"B|C"|"\\"D\\"|\\"E\\""

目标数组:

[
  '"A"',
  '"B|C"',
  '"\"D\"|\"E\""'
]

基本上,我正在尝试找到/(?<!\\\\)".*?(?<!\\\\)"/g的替代方法,因为Firefox当前不支持lookbehinds。 该解决方案不必使用正则表达式,但是应该相当有效。

只需找到所有引用的文本/"[^"\\\\]*(?:\\\\[\\S\\s][^"\\\\]*)*"/g
不需要为此。

https://regex101.com/r/r5SJsR/1

格式化

 "
 [^"\\]*                       # Double quoted text
 (?: \\ [\S\s] [^"\\]* )*
 "

简单的正则表达式/"[^\\\\"]+"|"\\S*"/g怎么样?

  • 前两个集合( "A"'"B|C" )用"[^\\\\"]+"覆盖-任何不是反斜杠或包含在一组引号内的引号
  • 管道( | )分隔两个条件
  • 第三组( "\\"D\\"|\\"E\\"" )简单地用"\\S*"覆盖-包装在一组引号内的任何非空格

这将返回与您最初的regex相同的结果,没有后顾之忧,并且可以在此处看到在Regex101上工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM