Как я могу заменить все вхождения определенного слова из заданной строки другим, если слово не встречается в кавычках.Обратите внимание, что входная строка, скорее всего, будет содержать экранированные кавычки.Само слово не будет содержать кавычек.
[РЕДАКТИРОВАТЬ: оригинальная формулировка была - «Входная строка обязательно будет содержать экранированные кавычки».Позже я понял, что это не «определенно», а «скорее всего»].
Пример: замена FOO на BAR
Ввод: FOO "FOO" 'FOO' " 1 + FOO + 2 " ABCFOOXYZ " str1\"FOO\"str3'FOO'\'\'" ' str1\'FOOstr3"FOO"\"\"' \"FOO\"
Вывод: BAR "FOO" 'FOO' " 1 + FOO + 2 " ABCBARXYZ " str1\"FOO\"str3'FOO'\'\'" ' str1\'FOOstr3"FOO"\"\"' \"BAR\"
Обратите внимание, что последнее появление FOO находится не внутри кавычек, сами цитаты были экранированы.Следовательно, он заменяется на BAR.
Я ищу регулярное выражение в JavaScript.
уточнение - Входная строка будет содержать как одинарные, так и двойные кавычки, возможно, оба экранированы.Мы должны заменять слово только тогда, когда оно вообще не заключено в кавычки (ни с одинарными, ни с двойными кавычками).
РЕДАКТИРОВАТЬ:
Что я пытался: мне удалось получить все вхождения FOO, которые НЕ должны подвергаться замене (["']) (?: (? = (\?))\ 2.) *? \ 1 Вышеуказанное будет соответствовать всем приведенным строкам. Они должны быть исключены из замены.
Я не специалист по регулярным выражениям и не могу выйти за рамки этого, много пробовал.