Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.18;
Скачать: CL | DM;

Вниз

Помогите с регекспом (Perl-совместимым)   Найти похожие ветки 

 
DillerXX ©   (2008-11-22 22:24) [0]

В общем есть строка вида "abcicba" и мне нужно получить из неё строку abcicba (убрать тег b). Тег может встречаться 1 или 2 раза, и в любых местах, внутри тега всега 1 символ. Мне интересно именно как получить строку, без предварительного replace.


 
DillerXX ©   (2008-11-22 22:25) [1]

Форум скушал тег. Ну пусть тег будет выглядеть как abc[t]i[/t]cba


 
antonn ©   (2008-11-22 23:13) [2]

</?[a-z][a-z0-9]*[^<>]*>
любой тег


 
DillerXX ©   (2008-11-23 01:07) [3]

У меня стоит задача получить в matched строку без тега.


 
palva ©   (2008-11-23 01:20) [4]

А что значит Perl-совместимый? Если на Perl, то работает такой код:

$sss = "hhhjaaakvvv";
$sss =~ s/(.)<\/b>/$1/gi;
print $sss; # hhhjaaakvvv


 
palva ©   (2008-11-23 01:24) [5]

Ну вот опять съедено. Ну поставил же CODE! Повторю вручную.
$sss = "hhhjaaakvvv";
$sss =~ s/(.)<\/b>/$1/gi;
print $sss; # hhhjaaakvvv


 
palva ©   (2008-11-23 01:29) [6]

Хорошо же работает - "амперсанд lt" тоже не отобразил. Тогда поставлю вместо угловых скобок квадратные.
$sss = "hhh[b]j[/B]aaa[b]k[/b]vvv";
$sss =~ s/[b](.)[\/b]/$1/gi;
print $sss; # hhhjaaakvvv


 
DillerXX ©   (2008-11-23 01:30) [7]

Это ж реплейс! :) А меня очень напрягла проблема, как же всё-таки взять и отхавать строку сразу одним запросом поиска. Только что-то в духе
"([a-zA-Z]|(.)<\/b>+)". Извини, в Qt пишу, забыл перловые модификаторы и синтаксис оформления регекспа.


 
DillerXX ©   (2008-11-23 01:32) [8]

Ааарррх!! *далее нецензурно*

"([a-zA-Z]|{b}(.){\/b}+)". А то [ ] не кошерно, это ж метасимвол!


 
Дмитрий С   (2008-11-23 15:49) [9]

А фигурные кошерно значит:)

"([a-zA-Z]|[<]b[>](.)[<]\/b[>]+)"


 
Дмитрий С   (2008-11-23 15:50) [10]


> DillerXX ©   (23.11.08 01:32) [8]

Кстати а для чего у тебя + в конце?


 
DillerXX ©   (2008-11-23 20:19) [11]

Ну мне же всё слово отпарсить надо. Я просто прикинул возможный регксп, но он естественно неверный, т.к. в matched слово не положит.


 
antonn ©   (2008-11-23 20:35) [12]

ну немного смекалки... :)
$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 );


 
DillerXX ©   (2008-11-23 23:29) [13]

омг... ладо, в общем коллектвными усилиями вы убедил меня, что без реплейса нельзя. а antonn даже убедил что его можно записать в 1 строчку!


 
clickmaker ©   (2008-11-24 16:57) [14]

> без реплейса нельзя. а antonn даже убедил что его можно
> записать в 1 строчку!

text := StringReplace(StringReplace(text, "[b]", "", [rfReplaceAll]), "[/b]", [rfReplaceAll]);
тоже в одну строчку )


 
antonn ©   (2008-11-24 23:08) [15]


> clickmaker ©   (24.11.08 16:57) [14]

это не спортивно :)



Страницы: 1 вся ветка

Текущий архив: 2009.01.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
15-1226873370
wl
2008-11-17 01:09
2009.01.18
сниму коннату в москве или области


15-1226943419
Маэстро
2008-11-17 20:36
2009.01.18
Почему не дают больничный когда депрессия?


2-1228244925
Serg
2008-12-02 22:08
2009.01.18
Статус интернет


2-1228195255
Sw
2008-12-02 08:20
2009.01.18
Тип данных


2-1228511695
Suntechnic
2008-12-06 00:14
2009.01.18
Нужнапомощь с запросом