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