2010-04-03 9 views
9

Estoy usando regex para hacer coincidir todos los nombres de propiedad no citados en mis archivos json. Eclipse tiene ningún problema para encontrar las coincidencias deseados, pero cuando quiero reemplazar las cadenas coincidentes con "$2", me sale este error: Match string has changed in file filename.json. Match skippedProblema con Reemplazar en Eclipse

Ésta es la expresión regular que estoy usando:

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

alguna idea sobre cómo para solucionar este problema?

+0

Sólo un pensamiento salvaje: Creo que está fallando en el grupo de captura dentro de otro grupo de captura. Tal vez $ 2 no existe, solo tiene $ 1 y 3 subgrupos en eso. Sin embargo, ni idea de cómo accederías a ellos. – NomeN

Respuesta

1

Suena como un problema con la herramienta en lugar de la expresión regular, pero no estoy familiarizado con Eclipse, así que no puedo ser más específico. ¿Podría estar esperando \2 en lugar de $2?

Suponiendo que los nombres de propiedad coinciden con \w+, esa expresión regular debería funcionar bien, aunque la búsqueda negativa es redundante. Si el siguiente carácter es un colon-- (?=:) --entonces, por supuesto, no es un apóstrofo o comillas-- (?!['"]).

+0

Eclipse usa $ 1, $ 2, no \ 1, \ 2. Gracias por mejorar la expresión regular, por cierto. – Imran

Cuestiones relacionadas