Здравствуйте, мне нужно заменить mediawiki H1 markup (=title=
) двойными равными знаками (==Title==
).
Однако мне нужно оставить разметку Mediawiki H2 (==title=
=) неизменной.
Итак, следующее:
=This is title= ==This is subtitle== ===This is sub sub title===
должны стать:
==This is title== ==This is subtitle== ===This is sub sub title===
с помощью:
preg_replace('/(\={1})(.*)\\1/mU', '==\\2==', $s);
однако я получаю
==This is title== ====This is subtitle==== ======This is sub sub title======
Я считаю, что это жадно подходит и знак равенства, появляющийся внутри захвата, и удваивает его... Может ли кто-нибудь помочь?
(?<!=)(=[^=]+=)(?!=)
Вы можете использовать это и заменить это на =\1=
.Посмотреть демонстрацию.
Вы можете использовать образы:
$str = '=This is title= ==This is subtitle== ===This is sub sub title==='
$repl = preg_replace('/(?<!=)=(?!=)/', '==', $str);
//=> ==This is title== ==This is subtitle== ===This is sub sub title===
(?<!=)=(?!=)
будет соответствовать a =
который не соблюдается и которому предшествует =
m
не используется в этом регулярном выражении.m
так^$
соответствует каждой строке строки. Вы, возможно, хотелиs
если вы хотели.
включить новые строки.