Expression Java pour faire correspondre les accolades - "séquence d'échappement invalide"
Je veux analyser les imbriquée chaînes JSON en les scindant en place de manière récursive par { }. Les regex, je suis venu avec est "{([^}]*.?)}", que j'ai testé de façon appropriée attrape la chaîne que je veux. Cependant, lorsque j'essaie de l'inclure dans mon Java j'obtiens l'erreur suivante: "Invalid séquence d'échappement (valables sont \b \t \n \f \ \ r\\" \'\ )"
C'est mon code, et où l'erreur se produit:
String[] strArr = jsonText.split("\{([^}]*.?)\}");
Ce que je fais mal?
source d'informationauteur user1436111
Vous devez vous connecter pour publier un commentaire.
1. Curle accolades ont pas de signification particulière ici pour les regexp de la langue, de sorte qu'ils ne devraient pas être échappé, je pense.Si vous souhaitez vous échapper, vous pouvez. La barre oblique inverse est une évasion symbole pour les regexp, mais elle devrait aussi être échappés de Java lui-même avec la seconde barre oblique inverse.
Pourquoi ne pas vous échapper curle accolade à l'intérieur de regroupement de construire?
Il y a des bonnes JSON bibliothèques d'analyse https://stackoverflow.com/questions/338586/a-better-java-json-library
Vous sont réticents à l'aide de quantificateurs, de sorte qu'il ne fonctionne pas avec les accolades imbriquées, par exemple pour
{"a", {"b", "c"}, "d"}
il correspondra à la{"a", {"b", "c"}
Le méchant chose à propos de Java regexes est que java n'a pas de reconnaître une regex comme une expression régulière.
Il n'accepte que des
\\
,\'
,\"
ou\u[hexadecimal number]
comme valide les séquences d'échappement.Vous aurez ainsi à échapper à l'barres obliques inverses car évidemment
\{
est une défaillance de la séquence d'échappement.Version corrigée:
Double les barres obliques inverses:
L'expression régulière doit être
.
n'est pas nécessaire!Vous devez vous échapper de votre barre oblique inverse avec une barre oblique inverse. Depuis,
\{
n'est pas une séquence d'échappement: -Vous pouvez vous référer à Motif de la documentation pour plus d'informations sur les séquences d'échappement.