"\"Id\":null,\"foo\":\"bar\"" (change valu-6ren">
gpt4 book ai didi

Java ReplaceAll 正则表达式用于替换Json字符串值

转载 作者:行者123 更新时间:2023-12-02 02:03:16 32 4
gpt4 key购买 nike

我需要一个正则表达式来执行以下替换:

"\"Id\":\"123Abc\",\"foo\":\"bar\"" -> "\"Id\":null,\"foo\":\"bar\"" (change value for only field \"Id\" into null)
"\"Id\":123" -> "\"Id\":null" (works for numbers too)
"\"Id\":null" -> "\"Id\":null" (if already null, do nothing)
"\"foo\":\"bar\"" - > "\"foo\":\"bar\"" (if \"Id\" not present, do nothing)

我想出了\\\"Id\\\":([^]+),并在https://www.regextester.com上它与我的字符串匹配,但我尝试将其转换为 Java 代码,但该字符串没有任何反应。

str.replaceAll("\\\"Id\\\":([\\^]+)", "\\\"Id\\\":null");

最佳答案

插入符号 ( ^ ) 必须是方括号内的第一个符号才能产生反转效果,以便 [^\]+ 与任何字符匹配只要不是反斜杠即可。

此外,要取消的 id 字符串将带有双引号,因此我们也必须匹配它们并转义它们:\"[^\]+\"

此外,Java 需要额外的转义,因此最终会出现 \\\"[^\\]+\\\"

最后,我会选择这样的东西:

str.replaceAll("\\\"Id\\\":\\\"([^\\]+)\\\"", "\\\"Id\\\":null");

请注意,您可能需要添加可选的空格字符,具体取决于符合 JSON 的输入。

str.replaceAll("\\\"Id\\\"\s*:\s*\\\"([^\\]+)\\\"", "\\\"Id\\\"\s*:\s*null");

有关引用,您可以阅读https://www.regular-expressions.info/refquick.html

关于Java ReplaceAll 正则表达式用于替换Json字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366403/

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