Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: три тире подряд
 
 автор: elenaki   (21.10.2004 в 16:47)   письмо автору
 
 

нужно, чтобы сочетание больше трех тире подряд менялось на пустую строку "[---]*" -> ""
нужны обратные слеши перед тире?


$str = ereg("^[\-\-\-]*","",$str);


почему-то, если я ставлю [\-] или [\-\-], мне выдает 1 (а я хочу совсем пустую строку),
а если пишу [\-\-\-], то ругается Warning: REG_ERANGE:invalid character range in

если ставлю + вместо * , то выдает пустую строку при одном или двух тире, а при трех опять ругается так же.

   
 
 автор: cheops   (21.10.2004 в 20:43)   письмо автору
 
   для: elenaki   (21.10.2004 в 16:47)
 

А нет, символ "-" как раз не нужно экранировать, следует экранировать квадратные скобки:
<?php
  $str 
"[---] Это текст [---]";
  echo 
$str."<br>";
  
$str preg_replace("|\[---\]|","",$str);
  echo 
$str;
?>

   
 
 автор: elenaki   (21.10.2004 в 21:59)   письмо автору
 
   для: cheops   (21.10.2004 в 20:43)
 

спасибо. только квадратные скобки не нужны. квадратные скобки - это я поставила, т.к. хотела изобразить шаблон. когда повторяемое сочетание, надо ведь шаблоны в эреги подставлять. или вот это - |? у меня в книжке написано, что дефис надо экранировать, а шаблоны заключаются в квадратные скобки...

   
 
 автор: cheops   (21.10.2004 в 22:11)   письмо автору
 
   для: elenaki   (21.10.2004 в 21:59)
 

>когда повторяемое сочетание, надо ведь шаблоны в эреги
>подставлять. или вот это - |? у меня в книжке написано, что
>дефис надо экранировать, а шаблоны заключаются в квадратные
>скобки...
Если заранее известно сколько символов - проще и быстрее их указать явно, т.е. если нужно найти три дефиса (---), то их и следует указывать, если их число не известно, можно воспользоваться шаблоном "[-]+" (один или большее число дефисов), только следует помнить, что квадратные скобки всегда обозначают один символ из представленных внутри. Экранировать следует всё, что входит в состав управляющих квантификаторов: [ ] + * и т.п.

PS Вообще существует несколько диалектов регулярных выражений, что самое паршивое они во многом похожи друг на друга и различаются в деталях. Даже в PHP существует два набора функций Perl-регулярные выражения (самый распрастранённый диалект: см. ссылку) и стандартные регулярные выражения (расширеные выражения POSIX).

http://www.softtime.ru/dic/id_dic=134&id_group=3

   
 
 автор: cheops   (21.10.2004 в 22:27)   письмо автору
 
   для: cheops   (21.10.2004 в 22:11)
 

К регулярным выражениям следует подходить как ко вспомогательному, но независимому языку программирования (вроде SQL), чтобы их освоить стоит продраться хотя бы через половину книги "Регулярные выражения" Дж. Фридл - это по-моему сейчас единственное современное издание, наиболее полно описывающее регулярные выражения - в РФ его издаёт Питер - на обложке симпатишные совы. Книга стоящая и охватывает практически все диалекты, если часто приходится работать с регулярными выражениями её следует доставать всеми доступными способами.

PS Правда для новичков книга является лучшим способом отбить всё желание заниматься программированием :) - читать её тяжелова то, кроме того автор не стесняет себя языками программирования - перебрал по моему все языки, где встречаются регулярные выражения (сразу скажу PHP практически отсутствует, что в общем не мешает освоению материала).

   
 
 автор: Hidden Demon   (21.10.2004 в 23:11)   письмо автору
 
   для: cheops   (21.10.2004 в 22:27)
 

Жаль, что пока что ее нигде нельзя просто скачать...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования