dzh*_*vis 3 regex language-agnostic match
是否可以使用标准正则表达式解析器匹配引号外的文本?我已经看到了这个答案,但它是通过使用PCRE完成的:
由于使用PERL,这不是一个纯粹的解决方案.我知道它也可以通过使用编程语言来解决,但我的想法是使用纯正则表达式解析器.
我做了类似的事情,但这不能正常工作
[^'"]*(?=(?:(['"])+(.*?\1))|([^'"]*$))
Run Code Online (Sandbox Code Playgroud)
先感谢您.
UPD1:想法是匹配引号外的任何类型的文本,解决方案不能依赖于输入.
<yourtext>(?=(?:[^"]*"[^"]*")*[^"]*$)
Run Code Online (Sandbox Code Playgroud)
是的,你可以使用积极的前瞻.但这假设你已经平衡,"并且在"某处没有流浪的谎言.参见演示.
http://regex101.com/r/sU3fA2/29
我想出了这个解决方案:
(?:[^"](?=(?:[^"]*?(?:["][^"]*?["][^"]*?)+$)|(?:[^"]*?$)))*|(^[^"]*["][^"]*$)
Run Code Online (Sandbox Code Playgroud)
http://regex101.com/r/pI8xA4/2
如果我们有奇数个引号,它就不会很好地工作 - 在这种情况下,它将跳过第一个引号。但这是目前对我来说最好的解决方案。