Главная страница
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.013 c
2-1228150306
Макс123
2008-12-01 19:51
2009.01.18
Загрузка в TImage


4-1204227658
Still Swamp
2008-02-28 22:40
2009.01.18
Как можно изменить значение clBtnFace?


2-1228132325
Arinyshka
2008-12-01 14:52
2009.01.18
динамическое создание вычисляемого поля AdoQuery


2-1228291866
b@v
2008-12-03 11:11
2009.01.18
MySQL &amp; Delphi


15-1227583427
Slider007
2008-11-25 06:23
2009.01.18
С днем рождения ! 25 ноября 2008 вторник