Я использую regex для соответствия всем незаключенным в кавычки именам свойства в моих json файлах. Eclipse не имеет никакой проблемы при нахождении желаемых соответствий, но когда я хочу заменить совпавшие строки "$2"
, Я получаю эту ошибку: Match string has changed in file filename.json. Match skipped
Вот regex, который я использую:
((\w+)\s*(?!['"])(?=:))
Какая-либо идея о том, как работать вокруг этой проблемы?
Это известная ошибка: замена не работает при использовании регулярного выражения с опережением
Похоже, проблема связана с инструментом, а не с регулярным выражением, но я не знаком с Eclipse, поэтому не могу быть более конкретным. Можно ли было ожидать \ 2
вместо $ 2
?
Предполагая, что имена свойств совпадают с \ w +
, это регулярное выражение должно работать нормально, хотя отрицательный просмотр вперед избыточный. Если следующий символ - двоеточие - (? =:)
- то, конечно, это не апостроф или кавычка - (?! ['"])
.