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

时间:2019-09-09 04:29:52

标签: java regex

我有一个长长的json字符串,"attributeName":"Loc ID"},"operands":["10000"]}],"frequency":{"type":"只是其中的一部分,我只想在给定的字符串中匹配此模式"operands":["10000"]

我已经尝试使用

string.replace("\"operands\":[\"10000\"]","\"operands\":[\"20000\"]")

甚至尝试过正则表达式"\"operands\":[\"\\d+\"]"

我正在使用JAVA以获得所需的结果。

1 个答案:

答案 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中观看它的匹配方式   针对一些样本输入。