我有一个长长的json字符串,"attributeName":"Loc ID"},"operands":["10000"]}],"frequency":{"type":"
只是其中的一部分,我只想在给定的字符串中匹配此模式"operands":["10000"]
。
我已经尝试使用
string.replace("\"operands\":[\"10000\"]","\"operands\":[\"20000\"]")
甚至尝试过正则表达式"\"operands\":[\"\\d+\"]"
我正在使用JAVA以获得所需的结果。
答案 0 :(得分:1)
也许这个表情
"operands"\\s*:\\s*\\[\\s*"(\\d*)"\\s*\\]
并替换为
"operands":["20000"]
可以正常工作。
如果没有多余的空间,
\"operands\":\\[\"(\\d*)\"\\]
可能工作正常。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class re{
public static void main(String[] args){
final String regex = "\"operands\"\\s*:\\s*\\[\\s*\"\\s*(\\d*)\\s*\"\\s*\\]";
final String string = "\"attributeName\":\"Loc ID\"},\"operands\":[\"10000\"]}],\"frequency\":{\"type\":\"\n"
+ "\"attributeName\":\"Loc ID\"},\"operands\":[ \" 10000 \" ]}],\"frequency\":{\"type\":\"";
final String subst = "\"operands\":[\"20000\"]";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(string);
final String result = matcher.replaceAll(subst);
System.out.println(result);
}
}
"attributeName":"Loc ID"},"operands":["20000"]}],"frequency":{"type":"
"attributeName":"Loc ID"},"operands":["20000"]}],"frequency":{"type":"
如果您想探索/简化/修改表达式,可以 在右上角的面板上进行了说明 regex101.com。如果您愿意, 也可以在this link中观看它的匹配方式 针对一些样本输入。