gpt4 book ai didi

Java 正则表达式 - 删除引号,除非前面有奇数个反斜杠

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:12 26 4
gpt4 key购买 nike

我正在使用正则表达式从字符串值中删除引号。这些字符串值可以包含转义引号,也可以包含转义反斜杠字符。

我不想删除转义引号,只想删除非转义引号。但是,转义反斜杠字符位于非转义引号之前的情况会造成困难。

我想要如下结果:

"value"         ->  value
'value' -> value
"\"value\"" -> \"value\" <-- contains escaped quotes
"value\" -> value\"
"value\\" -> value\\ <-- contains escaped backslash before non-escaped quote
"""val"ue\\\""" -> value\\\"

下面的正则表达式几乎对我有用,除了当引号前有偶数个反斜杠时,当我只想转义双引号和单引号字符时,它也会去除反斜杠。

(?<!\\\\)(?:\\\\{2})*[\"']

最佳答案

出现此问题是因为您匹配了这些反斜杠,并且它们被删除了。要保留它们,请捕获这些反斜杠,并替换为 $1占位符:

s.replaceAll("((?<!\\\\)(?:\\\\{2})*)[\"']", "$1")

请参阅regex demo .

((?<!\\\\)(?:\\\\{2})*)现在包裹在 (...) 中您可以使用$1来引用该组中捕获的值在替换模式中。

关于Java 正则表达式 - 删除引号,除非前面有奇数个反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com