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

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

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

 

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

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

тема: текст, ссылка и теги
 
 автор: vadimka   (30.12.2010 в 21:50)   письмо автору
 
 

С наступающим!
<td><a href="http://site.ru/train/t34983">60</a> ("слова не только русские")</td>
<td><a href="http://site.ru/train/t33367">382 **</a></td>
<td><a href="http://site.ru/train/t5870">526Л</a></td>

пытаюсь так:
"#<td><a href=\"http:\/\/site\.ru\/train\/t[\d]+\">([\d]+[А-Я]?)([\*])?[<\/a>]([\(\)\"\w]+)?<\/td>#is"

но это не видит звездочки и последнюю переменную

  Ответить  
 
 автор: cheops   (30.12.2010 в 21:59)   письмо автору
 
   для: vadimka   (30.12.2010 в 21:50)
 

Попробуйте следующее выражение
"#<td><a href=\"http://site\.ru/train/t[\d]+\">([\d]+[А-Я]?)([\* ]+)?</a>(.*?)</td>#is"

  Ответить  
 
 автор: vadimka   (30.12.2010 в 22:39)   письмо автору
 
   для: cheops   (30.12.2010 в 21:59)
 

Спасибо, а то бьюсь второй день! не могли бы Вы объяснить пробел после звездочки в регулярке (я так понял - это "ключ")

  Ответить  
 
 автор: neadekvat   (30.12.2010 в 22:43)   письмо автору
 
   для: vadimka   (30.12.2010 в 22:39)
 

Пробел - это пробел :)

  Ответить  
 
 автор: SHAman   (30.12.2010 в 22:56)   письмо автору
 
   для: vadimka   (30.12.2010 в 22:39)
 

Все что в квадратных скобках - это класс символов, задающийся пользователем.Что там встречается то и составляет этот класс.
[абв] означает либо "а", либо "б", либо "в".
Если в [] заключить пробел, то искаться будет и он в том числе.

Все это верно за исключением диапазаонов, которые выглядят так:
[5-7] это либо 5, либо 6, либо 7
или
[а-я] - это любая строчная буква русского алфавита (если локаль настроена правильно и нет проблем с кодировкой).

  Ответить  
 
 автор: vadimka   (30.12.2010 в 23:10)   письмо автору
 
   для: SHAman   (30.12.2010 в 22:56)
 

Спасибо! я думал, что если есть модификатор "s" - то учитываются все пробелы...

  Ответить  
 
 автор: cheops   (30.12.2010 в 23:23)   письмо автору
 
   для: vadimka   (30.12.2010 в 23:10)
 

Нет, он только разрешает искать соответствие в пределах нескольких строк, а не одной, как по умолчанию.

  Ответить  
 
 автор: vadimka   (30.12.2010 в 23:25)   письмо автору
 
   для: cheops   (30.12.2010 в 23:23)
 

т.е. на квадратные скобки модификаторы не действуют?

  Ответить  
 
 автор: cheops   (30.12.2010 в 23:31)   письмо автору
 
   для: vadimka   (30.12.2010 в 23:25)
 

Почему? Действуют, тут в другом дело, да есть класс \s, который означает пробельные символы, а есть модификатор s - вот этот модификатор означает, что вы сможете найти такую строку
Результат
расположен на
нескольких строках.

Вот если модификатора s не будет, вы сможете найти либо "Результат", либо "расположен на", либо "нескольких строках.", а все вместе - нет, так как поиск будет вестись построчно. Собственно если вы его уберет, то заметите, что ничего не изменилось - в вашем случае модификатор s не нужен, так как у вас искомая подстрока всегда находится на одной строке, без переносов.

  Ответить  
 
 автор: vadimka   (30.12.2010 в 23:51)   письмо автору
 
   для: cheops   (30.12.2010 в 23:31)
 

Спасибо, буду потрошить мануалы:)

  Ответить  
 
 автор: Tonik992   (02.01.2011 в 17:39)   письмо автору
 
   для: vadimka   (30.12.2010 в 23:51)
 

Насчет использования пробелов в патерне.. Я бы юзал \040 (и сразу понятно, что пробел должен включаться в строку поиска)

  Ответить  
 
 автор: cheops   (30.12.2010 в 23:08)   письмо автору
 
   для: vadimka   (30.12.2010 в 22:39)
 

Добавлю к тому, что написал SHAman - у вас в выражении "382 **" есть пробел - его нужно учесть, у вас в выражении он нигде не фигурирует - поэтому строка и отбрасывалась.

  Ответить  
 
 автор: vadimka   (30.12.2010 в 23:10)   письмо автору
 
   для: cheops   (30.12.2010 в 23:08)
 

спасибо!

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

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