/ / Wyjątek w wątku „main” java.util.regex.PatternSyntaxException: Niezamknięta klasa znaków w pobliżu indeksu 41, „Metadane” [a-zA-Z0-9: {} ”, + () [] _ ​​== *] * [ }] - java

Wyjątek w wątku "główny" java.util.regex.PatternSyntaxException: Klasa zamkniętych znaków w pobliżu indeksu 41, "Metadane" [a-zA-Z0-9: {} ", + () [] _ ​​== *] * [} ] - java

Rzeczywisty obiekt metadanych:

,"Metadata":{"ModifiedDate":"Thu Dec 10 20151046","CreatedDate":"Thu Dec 10 2015 10:46:30 GMT+0530 (IST)","HiddenRule":"[{"text":"","data_type":"operator","internal_name":""},{"text":"Gender","data_type":"String","internal_name":"gender","class":"Open"},{"text":"","data_type":"operator","internal_name":""},{"text":"==","data_type":"operator","internal_name":"==","class":"Oper"},{"text":"","data_type":"operator","internal_name":""},{"text":"\"sd\"","data_type":"operator","internal_name":"\"sd\"","class":"Cons"},{"text":"","data_type":"operator","internal_name":""}]"}

Próba wyszukania obiektu „Metadata” w ciągu JSON i zastąpienie go spacją. Zasadniczo usuń obiekt z ciągu JSON. , „Metadane” [a-zA-Z0-9: {} ”, + () [] _ ​​==][}]. Ale po skompilowaniu w programie JAVA mam do czynienia z wyjątkiem,

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 41
,"Metadata"[a-zA-Z0-9:{}" ,+()[]_==*]*[}]
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.clazz(Pattern.java:2493)
at java.util.regex.Pattern.sequence(Pattern.java:2030)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.replaceAll(String.java:2162)
at temp.main(temp.java:20)

String str=","Metadata":{"ModifiedDate":"Thu Dec 10 20151046","CreatedDate":"Thu Dec 10 2015 10:46:30 GMT+0530 (IST)","HiddenRule":"[{"text":"","data_type":"operator","internal_name":""},{"text":"Gender","data_type":"String","internal_name":"gender","class":"Open"},{"text":"","data_type":"operator","internal_name":""},{"text":"==","data_type":"operator","internal_name":"==","class":"Oper"},{"text":"","data_type":"operator","internal_name":""},{"text":"\"sd\"","data_type":"operator","internal_name":"\"sd\"","class":"Cons"},{"text":"","data_type":"operator","internal_name":""}]"}";
String regexes = ","Metadata"[a-zA-Z0-9:{}" ,+()[]\_==*]*[}]";
System.out.println(str.replaceAll(regexes, "Hi!!!"));

Odpowiedzi:

0 dla odpowiedzi № 1

[ i ] są znakami specjalnymi w wyrażeniach regularnych. musisz uciec.

[a-zA-Z0-9:{}" ,+()[]_==*]*[}]