我需要删除一部分JSON文件,并用通用值替换。当前数据类似于:
"owned": {},
[START] "95cdecf3-3746-45ba-94bb-ad7314037108"
],
"loggedIn": false,
不要问[START]如何到达那里:)我试图用[START] [/ END]替换这个字段,但它全部搞砸了,而且我发现了650次#&# 39;感觉就像手动更换。
如何在文件中的所有匹配项中替换由以下内容包围的文本?
[START]
],
"loggedIn": false,
使用以下json
"invited": []
行?所以上面的输入应该看起来像:
"owned": {},
"invited:" [],
"loggedIn": false,
答案 0 :(得分:1)
使用string.replaceAll
功能。
String s = "\"owned\": {},\n" +
"[START] \"95cdecf3-3746-45ba-94bb-ad7314037108\"\n" +
"],\n" +
"\"loggedIn\": false,";
System.out.println(s.replaceAll("(?s)(?<=\\n|^)\\[START\\].*?(?=\\n\"loggedIn\":)", "\"invited:\" [],"));
<强>输出:强>
"owned": {},
"invited:" [],
"loggedIn": false,
(?s)
调用了DOTALL修饰符,它使你的正则表达式中的点匹配偶数换行符。 (?<=\\n|^)
肯定的后视,断言匹配必须以换行符或行锚的开头开头。这样它就会匹配开头出现的字符串[START]
,否则它会匹配一行中间或最后一个字符串[START]
。
或强>
(?m)^\[START\][\s\S]*?(?=\n\"loggedIn\":)
System.out.println(s.replaceAll("(?m)^\\[START\\][\\s\\S]*?(?=\\n\"loggedIn\":)", "\"invited:\" [],"));