我有一个字符串输出,我需要匹配,我使用的是regex
String schemaName = "Amazon";
String test = "{\"data\": [], \"name\": \"Amazon\", \"title\": \"StoreDataConfig\"}";
String output= method("\\[\\]",schemaName);
Matcher n = Pattern.compile(output).matcher(test);
boolean available = n.find();
System.out.println(available);
我想验证相同并将正则表达式传递给上面提到的方法
private static String method(String data, String schemaName) throws IOException {
System.out.println(data);
return ("{\"data\": " + data + ", \"name\": " + "\"" + schemaName + "\"" + ", \"title\": \"StoreDataConfig\"}");
}
但我总是得到java.util.regex.PatternSyntaxException: Illegal repetition
。
你能让我知道这是什么错误吗?
如果我不使用[]
的方法并直接给它,我没有收到错误
答案 0 :(得分:1)
看起来你正在这样做:
[]
。失败了...因为JSON-with-an-embedded-regex不是有效的正则表达式。
首先,{
字符是正则表达式元字符。
但真正的难题是......你到底想要做什么?
如果你只是想要一个与文字字符串匹配的正则表达式,那么这就可以了。
Pattern p = Pattern.compile(Pattern.quote(someLiteralString)).
你可以使用Pattern.quote来转义子正则表达式和文字字符串,以转义文字部分然后连接。
如果你最终要做的是使用模式匹配/正则表达式从JSON字符串中提取信息,那么......不要。更好的方法是使用适当的JSON解析器,并从JSON对象树中提取所需的信息。
答案 1 :(得分:0)
这是因为你需要像{}
"\\{"
个字符