Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите справиться с регулярным выражением 
:(
    Опции темы
yalo
Дата 2.11.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



Есть строки такого типа:

06.55 М/ф "Смешарики".
07.00, 19.00, 23.30 Новости.
07.30, 18.30, 23.00 Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ".

Надо их разбить на строки такого вида:

06.55 
М/ф "Смешарики".
07.00, 19.00, 23.30 
Новости.
07.30, 18.30, 23.00 
Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ".
Никак не могу сообразить как мне разорвать побоного вида строки. Если использовать preg_split
Код

$arr = preg_split("/\d\s\D/", $string, 2);

то получится что-то типа:
06.5 
/ф "Смешарики".
07.00, 19.00, 23.3
овости.
07.30, 18.30, 23.0
/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ".

А strpos здесь тоже никак не применишьsmile
Или здесь вообще как-то по другому надо...
Хотелось бы чего-то навроде preg_split, разрезающего по пробелу удовлетворяюшему определенному условию, а именно: перед пробелом любой символ кроме буквенного, а после - любой символ, кроме цифрового... Есть такое? или это бред?

PM MAIL ICQ   Вверх
SelenIT
Дата 2.11.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



yalo, тут, по-моему, скорее надо не разбить по условию, а выделить фрагменты по маске - "две цифры-точка-две цифры (возможно, несколько раз через запятую и пробел)" и "все остальное до конца строки". По-моему, для этого удобнее использовать preg_match в массив, а не preg_split.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
yalo
Дата 2.11.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



да, пожалуй, SelenIT, прав, написала в результате такое выражение
Код

preg_match("/(\d\d\.\d\d\s|+(\d\d\.\d\d\,\s)\d\d.\d\d\s)/", '06.00 Х/ф "КАК СКАЗАЛ ДЖИМ".', $matches)
 а в ответ такая ошибка:
Warning: preg_match(): Compilation failed: nothing to repeat at offset 14 in 
что-то не пойму smile  на несколько раз проверила, ошибки не нахожу...
но все же она есть smile 


Это сообщение отредактировал(а) yalo - 2.11.2006, 14:16
PM MAIL ICQ   Вверх
SelenIT
Дата 2.11.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



yalo, а что за плюс после знака альтернативы?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
yalo
Дата 2.11.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



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

Добавлено @ 14:35 
ага - вроде разобралась, + надо после круглых скобок ставитьsmile
спасибо, SelenIT, еще раз smile 
PM MAIL ICQ   Вверх
SelenIT
Дата 2.11.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Не следующего, а предыдущего... и по логике, видимо, надо не +, а *
Разницы с перлом большой действительно нет, та, что есть, описана в документации. Из литературы, наверное, нет ничего лучше Фридла - в этом форуме вне подразделов, по-моему, есть тема со ссылками на нее.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
yalo
Дата 2.11.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



верно, достаточно просто написать 
Код

preg_match("/(\d\d\.\d\d\,\s)*\d\d.\d\d\s/", '06.00 Х/ф "КАК СКАЗАЛ ДЖИМ".', $matches)

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.