Я прочитал много вопросов, которые задают о поиске регулярного выражения для сопоставления символов между двумя строками, но моя проблема в обратном. Я пытаюсь создать выражение, которое будет соответствовать символам НЕ между двумя строками.
Рассмотрим следующую строку.
This is short & [tag]fun & interesting[/tag].
Я хочу заменить любой символ амперсанда то есть НЕ внутри элементов тега с символом @. Результат должен быть таким, как показано ниже.
This is short @ [tag]fun & interesting[/tag].
Я попробовал следующее регулярное выражение, но, к сожалению, оно соответствует амперсанду внутри элементов тега.
/(?<!\[tag\])&(?!\[\/tag\])/g
Я понимаю, что он соответствует этому амперсанду, потому что он окружен символами по обе стороны в строке. Но я не могу добавить случайное количество символов для проверки, потому что lookbehind и lookahead должны быть фиксированной длины.
Есть ли регулярное выражение, которое выполнит sh того, что я хочу здесь?