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

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

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

 

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

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

тема: регулярное выражение (или несколько символов или ни одного)
 
 автор: shaman_rus   (09.03.2010 в 09:28)   письмо автору
 
 

необходимо выбрать строку в тексте ограниченную точкой с запятой: при этом строка это любые символы не являющиеся точкой с запятой числом от трех до двадцати или нет символов вообще. делаю так:
preg_match("%^([^;]{3,20}|\w{0});(.*)$%", $line, $matches);

как видно вариант "нет символов вообще" я описываю "|\w{0}" может есть более правильный вариант? заранее спасибо!

  Ответить  
 
 автор: exp   (09.03.2010 в 13:26)   письмо автору
 
   для: shaman_rus   (09.03.2010 в 09:28)
 

\w{0} это просто "пусто"
([^;]{3,20}|\w{0}) то-же самое что и ([^;]{3,20})? или ([^;]{3,20}|)

>необходимо выбрать строку

судя по ^$ и тому что нет модификаторов m и s
"%^([^;]{3,20})?;(.*)$%" совпадёт только сразу со всем текстом , если 3-20 символов есть ";" или его нет,
и после ";" в первом случае нет не одного переноса строки, во втором случае переносов строки не должно быть совсем.

m сделает так что ^$ станут границами строк а не текста
s сделает так что в (.*) смогут попадать переносы строк

  Ответить  
Rambler's Top100
вверх

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