Вложенные регулярные выражения смотрят вперед и смотрят назад
У меня проблемы с вложенным '+' / '-' lookahead / lookbehind в регулярном выражении.
Допустим, я хочу изменить'*'
в строке с'%'
и скажем так'\'
ускользает от следующего персонажа. (Превращение регулярного выражения в sql, как команда ^^).
Итак, строка
'*test*'
следует изменить на'%test%'
,'\\*test\\*'
->'\\%test\\%'
, но'\*test\*'
а также'\\\*test\\\*'
должен остаться прежним.Я пытался:
(?<!\\)(?=\\\\)*\* but this doesn't work
(?<!\\)((?=\\\\)*\*) ...
(?<!\\(?=\\\\)*)\* ...
(?=(?<!\\)(?=\\\\)*)\* ...
Какое правильное регулярное выражение будет соответствовать '*' в приведенных выше примерах?
В чем разница между(?<!\\(?=\\\\)*)\*
а также(?=(?<!\\)(?=\\\\)*)\*
или, если это по сути неправильно, разница между регулярными выражениями, имеющими такую визуальную конструкцию?