|
|
|
| текст для примера
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 символа | |
|
|
|
|
|
|
|
для: duhon
(18.11.2011 в 11:48)
| | А не проще сначала получить результат, а потом его уже разбить как нужно? | |
|
|
|
|
|
|
|
для: cheops
(18.11.2011 в 12:29)
| | ну это очень абстрактно вырезано с большой регулярки, так что тут или всю регулярку переписать на php или добавить сюда исключение.
А переписывать все не хочется.
вот такое решение нашел
preg_match('/^(?(?=a{3,})(a*)(a{2})|(a*)(a))/','aaaaadd',$match);
|
правда сбиваються номера групп, но можно использовать именованные группы с модификатором J
но это решение какое то нефеншуйное, может кто посоветует попроще | |
|
|
|