Я пишу небольшой язык сценариев для своей игры.
Я хотел бы разрешить для каждой строки JS буквальные строки (`"'
).
Я понял, как проверить все внутри, используя:
(?<e1>""|'|`)(?:\$\k<e1>|(?!\k<e1>).)*\k<e1>)
Работает.
Но сейчас у меня другая проблема. Мне нужно удалить все вкладки, которые не находятся внутри этих типов цитат.
Я посмотрел здесь как сопоставить все, что не в кавычках:
\t(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)
И у меня возникли проблемы при соединении этих двух миров, так что "a`\t`"
не удаляет эту среднюю вкладку как
\t(?=([^"'`$]*(\$.|['`"]([^"'`$]*\$.)*[^"'`$]*["`']))*[^"`']*$)
делает. Я знаю, я должен проверить последнюю не-экранированную (с $
не \
) цитату, но как мне это сделать?