-
В общем есть строка вида "abcicba" и мне нужно получить из неё строку abcicba (убрать тег b). Тег может встречаться 1 или 2 раза, и в любых местах, внутри тега всега 1 символ. Мне интересно именно как получить строку, без предварительного replace.
-
Форум скушал тег. Ну пусть тег будет выглядеть как abc[t]i[/t]cba
-
</?[a-z][a-z0-9]*[^<>]*> любой тег
-
У меня стоит задача получить в matched строку без тега.
-
А что значит Perl-совместимый? Если на Perl, то работает такой код:
$sss = 'hhhjaaakvvv';
$sss =~ s/(.)<\/b>/$1/gi;
print $sss; # hhhjaaakvvv
-
Ну вот опять съедено. Ну поставил же CODE! Повторю вручную. $sss = 'hhhjaaakvvv';
$sss =~ s/(.)<\/b>/$1/gi;
print $sss; # hhhjaaakvvv
-
Хорошо же работает - "амперсанд lt" тоже не отобразил. Тогда поставлю вместо угловых скобок квадратные.
$sss = 'hhh[b]j[/B]aaa[b]k[/b]vvv';
$sss =~ s/[b](.)[\/b]/$1/gi;
print $sss; # hhhjaaakvvv
-
Это ж реплейс! :) А меня очень напрягла проблема, как же всё-таки взять и отхавать строку сразу одним запросом поиска. Только что-то в духе "([a-zA-Z]|(.)<\/b>+)". Извини, в Qt пишу, забыл перловые модификаторы и синтаксис оформления регекспа.
-
Ааарррх!! *далее нецензурно*
"([a-zA-Z]|{b}(.){\/b}+)". А то [ ] не кошерно, это ж метасимвол!
-
А фигурные кошерно значит:)
"([a-zA-Z]|[<]b[>](.)[<]\/b[>]+)"
-
> DillerXX © (23.11.08 01:32) [8]
Кстати а для чего у тебя + в конце?
-
Ну мне же всё слово отпарсить надо. Я просто прикинул возможный регксп, но он естественно неверный, т.к. в matched слово не положит.
-
ну немного смекалки... :) $text="id_zna<b >enie</b >gfddfg id_zna[b]enie[/b]gfddfg";
echo preg_replace( "#(.+?)(</?[a-z][a-z0-9]*[^<>]*>)#i","\\1",$text );
echo "\r\n<br>".preg_replace( "#(.+?)(\[/?[a-z][a-z0-9]*[^\[\]]*\])#i","\\1",$text );
-
омг... ладо, в общем коллектвными усилиями вы убедил меня, что без реплейса нельзя. а antonn даже убедил что его можно записать в 1 строчку!
-
> без реплейса нельзя. а antonn даже убедил что его можно > записать в 1 строчку!
text := StringReplace(StringReplace(text, '[b]', '', [rfReplaceAll]), '[/b]', [rfReplaceAll]); тоже в одну строчку )
-
> clickmaker © (24.11.08 16:57) [14]
это не спортивно :)
|