2010-04-03 6 views
9

J'utilise regex pour faire correspondre tous les noms de propriété non cotés dans mes fichiers json. Eclipse n'a pas de problème à trouver les matchs souhaités, mais quand je veux remplacer les chaînes mises en correspondance avec "$2", je reçois cette erreur: Match string has changed in file filename.json. Match skippedProblème avec le remplacement dans Eclipse

Voici le regex J'utilise:

((\w+)\s*(?!['"])(?=:)) 

Toute idée sur la façon pour contourner ce problème?

+0

Juste une pensée sauvage: Je pense qu'il échoue sur le groupe de capture dans un autre groupe de capture. Peut-être que 2 $ n'existe pas, il n'y a que 1 ou 3 sous-groupes. Je ne sais pas comment vous pourriez y accéder. – NomeN

Répondre

1

Cela ressemble à un problème avec l'outil plutôt que l'expression régulière, mais je ne suis pas familier avec Eclipse, donc je ne peux pas être plus précis. Pourrait-il attendre \2 au lieu de $2?

En supposant que les noms de propriété correspondent à \w+, cette expression régulière devrait fonctionner correctement, bien que la recherche anticipée négative soit redondante. Si le caractère suivant est un deux-côlon - (?=:) - alors bien sûr ce n'est pas une apostrophe ou un guillemet - (?!['"]).

+0

Eclipse utilise $ 1, $ 2, pas \ 1, \ 2. Merci d'avoir amélioré la regex, BTW. – Imran

Questions connexes