【发布时间】:2018-12-11 17:24:13
【问题描述】:
我正在使用正则表达式从字符串值中去除引号。这些字符串值可以包含转义的引号,也可以包含转义的反斜杠字符。
我不想删除转义引号,只删除非转义引号。但是,转义反斜杠字符位于非转义引号之前的情况会造成困难。
我想要如下结果:
"value" -> value
'value' -> value
"\"value\"" -> \"value\" <-- contains escaped quotes
"value\" -> value\"
"value\\" -> value\\ <-- contains escaped backslash before non-escaped quote
"""val"ue\\\""" -> value\\\"
以下正则表达式几乎对我有用,除了当我只想转义双引号和单引号字符时,当引号前有偶数个反斜杠时,它也会剥离反斜杠。
(?<!\\\\)(?:\\\\{2})*[\"']
【问题讨论】:
-
为什么
"""val"ue\\\"""会导致value\\\"?"介于value之间呢? -
我在想
(["'])(?:\\.|.)*?\1之类的东西来匹配整个引号(\.用于匹配任何转义字符),但上面的例子让它变得更难了。 -
您好,请查看两个标记的问题。他们肯定会帮助您移植。否则,请编辑您的问题以反映差异。