|
|
|
| Добрый день
исходный текст
id:1 id2:11
id:2 id2:22
id:3 id2:33
lalala
id:4 id2:44
id:5 id2:55
id:6 id2:66
|
регекс
этот регекс находит 6 матчей. в каждом матче по 2 группы со значениями
надо сделать так, чтобы было всего 3 матча (3 первых, до lalala)
Всю голову себе уже сломал. Помогите пожалуйста.
ЗЫ очень хотелось обозвать тему "помогите!!!" =)
Спасибо! | |
|
|
|
|
|
|
|
для: forkir
(21.09.2012 в 18:49)
| | А за 2 раза не прокатит?
1ый - все что до лалала: /^(.*?)lalala/
2ой уже в нем то что надо: /id:(\d*) id2:(\d*)/ | |
|
|
|
|
|
|
|
для: Sfinks
(21.09.2012 в 20:38)
| | не прокатит =( | |
|
|
|
|
|
|
|
для: forkir
(22.09.2012 в 12:36)
| | Так трудно что-либо решить. Дайте оригинал, откуда нужно парсить.
В группах по три элемента всегда? | |
|
|
|
|
|
|
|
для: forkir
(22.09.2012 в 12:36)
| | От того что вам не хочется, логика работы РВ не изменится.
А логика такова, что никаких рекурсивных просмотров текста не может быть!
А чтобы узнать что до определенной точки нет надписи lalala, нужно просмотреть сперва этот текст.
И, хотя есть такая вещь, как положительный/отрицательный просмотр вперед/назад от определенной точки без включения этого фрагмента в шаблон, но он ограничен фиксированной длинной искомого фрагмента.
В общем либо как я вам в первом посте сказал, либо только первое вхождение, либо только последнее перед lalala и т.п.
Вычленить все сразу одним просмотром никак не получится!
Ну если их только не всегда фиксированное число, как сказал Deed, например 3. | |
|
|
|
|
|
|
|
для: Sfinks
(22.09.2012 в 21:32)
| | Понял. Спасибо. Придется расширять функционал програмулины... =) Думаю можно закрывать. | |
|
|
|
|
автор: ..... (24.09.2012 в 15:15) |
|
|
для: Sfinks
(22.09.2012 в 21:32)
| | можно и по другому с помощью \g
<xmp><?php
$txt = 'id:1 id2:11
id:2 id2:22
id:3 id2:33
lalala
id:4 id2:44
id:5 id2:55
id:6 id2:66
';
preg_match_all('#\G^\s*id:(\d*)\s+id2:(\d*).*$[\r\n]+#m', $txt, $o);
print_r($o);
| но не всегда оправдано | |
|
|
|
|
|
|
|
для: .....
(24.09.2012 в 15:15)
| | Не знал! Спасибо.
А почему не оправдано? | |
|
|
|
|
|
|
|
для: .....
(24.09.2012 в 15:15)
| | Спасибо. \g - находка)) | |
|
|
|