2010-04-03 19 views
9

Sto usando regex per abbinare tutti i nomi di proprietà non quotate nei miei file json. Eclipse non ha alcun problema a trovare le partite desiderate, ma quando voglio sostituire le stringhe corrispondenti con "$2", ottengo questo errore: Match string has changed in file filename.json. Match skippedProblema con Sostituisci in Eclipse

Ecco l'espressione regolare che sto usando:

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

Qualche idea su come aggirare questo problema?

+0

Solo un pensiero selvaggio: Penso che sta venendo a mancare il gruppo di cattura all'interno di un altro gruppo di cattura. Forse $ 2 non esiste, ha solo $ 1 e 3 sottogruppi in questo. Non ho idea di come avresti accesso a quelli però. – NomeN

risposta

1

Sembra un problema con lo strumento piuttosto che con la regex, ma non ho familiarità con Eclipse, quindi non posso essere più specifico. Potrebbe aspettarsi \2 invece di $2?

Supponendo che i nomi delle proprietà corrispondano a \w+, l'espressione regolare dovrebbe funzionare correttamente, sebbene il lookahead negativo sia ridondante. Se il carattere successivo è un due punti - (?=:) - allora non si tratta di un apostrofo o di virgolette-- (?!['"]).

+0

Eclipse utilizza $ 1, $ 2, non \ 1, \ 2. Grazie per migliorare la regex, BTW. – Imran