Java 如何匹配字符串中要匹配的字符串为“的模式”;“操作数”:[“10000”]
我有一个很长的json字符串,Java 如何匹配字符串中要匹配的字符串为“的模式”;“操作数”:[“10000”],java,regex,Java,Regex,我有一个很长的json字符串,“attributeName”:“Loc ID”},“operans”:[“10000”]}],“frequency”:{“type”:“这只是其中的一部分,我只想在给定字符串中匹配此模式“operans”:[“10000”] 我已经试过使用 string.replace(“\”操作数\“:[\”10000\”]”,“\”操作数\“:[\”20000\“]” 甚至尝试过regex“\”操作数\:[\“\\d+\”]“ 我正在使用JAVA获得所需的结果。也许,这个表达
“attributeName”:“Loc ID”},“operans”:[“10000”]}],“frequency”:{“type”:“
这只是其中的一部分,我只想在给定字符串中匹配此模式“operans”:[“10000”]
我已经试过使用
string.replace(“\”操作数\“:[\”10000\”]”,“\”操作数\“:[\”20000\“]”
甚至尝试过regex“\”操作数\:[\“\\d+\”]“
我正在使用JAVA获得所需的结果。也许,这个表达式
"operands"\\s*:\\s*\\[\\s*"(\\d*)"\\s*\\]
以及替代,
"operands":["20000"]
可能还可以
如果没有额外的空间
\"operands\":\\[\"(\\d*)\"\\]
可能很好用
试验
输出
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 .如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
使用json解析器而不是正则表达式。您应该在这里使用json解析器,而不是正则表达式。
[
和]
在正则表达式中有特殊的含义,它们必须转义(引用)才能匹配(两个反斜杠)-谢谢,但字符串没有任何空格字符仍然没有成功..它还没有匹配..我尝试了转义:还有“\“操作数\“\”\:\[\”\\d*“\\]”“
和“\”操作数\“\:\[\”(\\d*)\”\”]“
实际上这对我很有效“\”操作数\“:\[\”(\+?\\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":"