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