плиз помогите с регуляркой!

marvinz

Гуру форума
Регистрация
7 Апр 2009
Сообщения
164
Реакции
85
дано массив элементов следующего вида:
букваЦифраБуквыИлиЦифрыИлиБуквысцифрами, например

h12345
h12345h123
h923929239239239239239239329ukfmfmfiorirjr03030303030303

причем элементы могут повторяться!

какой регуляркой из всех этих элементов выдрать элементы вида БукваЦифра без дубликатов?
(так чтобы например третья строчка исключилась а не разбилась на два элемента)
 
пробуй
'/^\S\d*$/'
 
что-то я не до конца понял условие.
для вашего примера (или нового примера) приведите четкий список элементов, которые вы хотите получить в результате.
 
KillDead, спасибо, днем попробую отпишусь,

DrakonHaSh, пример дано:
h11111123123131231231231231
h11111123123131231231231
h11111123123131231231231
h111111231231312312312313333333333lkjop566
h11111123123131231231231uuummmjj

на выводе нужно
h11111123123131231231231231
h11111123123131231231231
 
$inList должен начинаться и заканчиваться переводами строки
PHP:
$inList="
h111111231231312312312312313
h11111123123131231231231
h11111123123131231231231
h111111231231312312312313333333333lkjop566
h111111231231312312312312313ccc
h11111123123131231231231
h11111123123131231231231uuummmjj
";
echo "<pre>".$inList."=>\n";
preg_match_all('/[\n\r][a-zA-Z]+\d+[\n\r]/s', $inList, $match);
print_r(array_unique($match[0]));
 
Решена проблема?
На самом деле очень сложно по паре примеров решать. Да еще с таким корявым описанием. Вообще учись составлять тз для регулярок. Попробую сделать это за тебя:
(начало строки )(любая буква латиница) (набор из нескольких одинаковых цифр) (набор из 3 цифр + повторяется многократно)(конец строки)
или
(начало строки)(любая буква латиница) (набор из нескольких одинаковых цифр) (набор из нескольких цифр + повторяется многократно)(конец строки)

где несколько это 1+

Но здесь уже может быть много преблем. Первая часть решается легко регуляркой

^([a-zA-Z]{1})(\d)\2*

^ - начало строки, ([a-zA-Z]{1}) ну или ([a-zA-Z]*) - дословно 1+ символов из массива букв, (\d)\2* - ищем любую цифру (которая сохранится в буфере памяти под номером 2 (!) и смотрим повторения шаблона под номером 2 опять же в количестве 1+

Теперь о проблемах:
1- Первая цифра 3го шаблона может совпадать со 2м: А 11111111 123123123123
2- Повторения не разделены, и на сколько я знаю (а может я просто не достаточно знаю) найти такое повторение в массиве врядли реально. Если только уже использовать средства языка.
 
Назад
Сверху