/ / Exception dans le fil "principal" java.util.regex.PatternSyntaxException: Classe de caractères non fermée proche de l'index 41, "Métadonnées" [a-zA-Z0-9: {} ", + () [] _ ​​== *] * [ }] - java

Exception dans le fil "principal" java.util.regex.PatternSyntaxException: Classe de caractères non fermée proche de l'index 41, "Métadonnées" [a-zA-Z0-9: {} ", + () [] _ ​​== *] * [} ] - java

Objet de métadonnées réel ::

,"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":""}]"}

Essayez de rechercher l'objet "Métadonnées" dans la chaîne JSON et remplacez-le par un blanc. Supprimez fondamentalement l'objet de la chaîne JSON. , "Métadonnées" [a-zA-Z0-9: {} ", + () [] _ ​​==][}]. Mais une fois compilé dans le programme JAVA, je fais face à l’exception,

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!!!"));

Réponses:

0 pour la réponse № 1

[ et ] sont des caractères spéciaux dans regex. vous devez y échapper.

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