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

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

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

 

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

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

тема: забрать у жадного квантификатора 1 или 2 символа
 
 автор: duhon   (18.11.2011 в 11:48)   письмо автору
 
 

текст для примера
aaaabbabbaa

нужно 2 группы из первых букв "а" поделены таким образом
если вначале 5 буква "а" то (aaa)(aa)
ниже приведу в кратной форме

a -> ()(a)
aa -> (a)(a)
aaa -> (a)(aa)
aaaa -> (aa)(aa)
aaaaa -> (aaa)(aa)
aaaaaa -> (aaaa)(aa)
aaaaaaa -> (aaaaa)(aa)


тоесть первая группа не обязательна, а вторая или 1"а" или 2"а"

использую PCRE -> PHP

сейчас попробывал так
(a*)a{1,2}
понятно что это не работает, жадный не отдает 2 символа

  Ответить  
 
 автор: cheops   (18.11.2011 в 12:29)   письмо автору
 
   для: duhon   (18.11.2011 в 11:48)
 

А не проще сначала получить результат, а потом его уже разбить как нужно?

  Ответить  
 
 автор: duhon   (18.11.2011 в 12:43)   письмо автору
 
   для: cheops   (18.11.2011 в 12:29)
 

ну это очень абстрактно вырезано с большой регулярки, так что тут или всю регулярку переписать на php или добавить сюда исключение.
А переписывать все не хочется.

вот такое решение нашел
preg_match('/^(?(?=a{3,})(a*)(a{2})|(a*)(a))/','aaaaadd',$match);

правда сбиваються номера групп, но можно использовать именованные группы с модификатором J
но это решение какое то нефеншуйное, может кто посоветует попроще

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

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