Вложенные регулярные выражения смотрят вперед и смотрят назад

У меня проблемы с вложенным '+' / '-' lookahead / lookbehind в регулярном выражении.

Допустим, я хочу изменить'*' в строке с'%' и скажем так'\' ускользает от следующего персонажа. (Превращение регулярного выражения в sql, как команда ^^).

Итак, строка

'*test*' следует изменить на'%test%','\\*test\\*' ->'\\%test\\%', но'\*test\*' а также'\\\*test\\\*' должен остаться прежним.

Я пытался:

(?<!\\)(?=\\\\)*\*      but this doesn't work
(?<!\\)((?=\\\\)*\*)    ...
(?<!\\(?=\\\\)*)\*      ...
(?=(?<!\\)(?=\\\\)*)\*  ...

Какое правильное регулярное выражение будет соответствовать '*' в приведенных выше примерах?

В чем разница между(?<!\\(?=\\\\)*)\* а также(?=(?<!\\)(?=\\\\)*)\* или, если это по сути неправильно, разница между регулярными выражениями, имеющими такую визуальную конструкцию?

Ответы на вопрос(5)

Ваш ответ на вопрос