Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何匹配字符串中要匹配的字符串为“的模式”;“操作数”:[“10000”]_Java_Regex - Fatal编程技术网

Java 如何匹配字符串中要匹配的字符串为“的模式”;“操作数”:[“10000”]

Java 如何匹配字符串中要匹配的字符串为“的模式”;“操作数”:[“10000”],java,regex,Java,Regex,我有一个很长的json字符串,“attributeName”:“Loc ID”},“operans”:[“10000”]}],“frequency”:{“type”:“这只是其中的一部分,我只想在给定字符串中匹配此模式“operans”:[“10000”] 我已经试过使用 string.replace(“\”操作数\“:[\”10000\”]”,“\”操作数\“:[\”20000\“]” 甚至尝试过regex“\”操作数\:[\“\\d+\”]“ 我正在使用JAVA获得所需的结果。也许,这个表达

我有一个很长的json字符串,
“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":"