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

Тема в разделе "Perl, Python, Ruby", создана пользователем marvinz, 5 апр 2012.

  1. marvinz

    marvinz

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

    h12345
    h12345h123
    h923929239239239239239239329ukfmfmfiorirjr03030303030303

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

    какой регуляркой из всех этих элементов выдрать элементы вида БукваЦифра без дубликатов?
    (так чтобы например третья строчка исключилась а не разбилась на два элемента)
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    пробуй
    '/^\S\d*$/'
     
  3. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    что-то я не до конца понял условие.
    для вашего примера (или нового примера) приведите четкий список элементов, которые вы хотите получить в результате.
     
  4. marvinz

    marvinz

    Регистр.:
    7 апр 2009
    Сообщения:
    164
    Симпатии:
    79
    KillDead, спасибо, днем попробую отпишусь,

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

    на выводе нужно
    h11111123123131231231231231
    h11111123123131231231231
     
  5. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    $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]));
     
  6. ptuchster

    ptuchster Создатель

    Регистр.:
    21 ноя 2007
    Сообщения:
    41
    Симпатии:
    28
    Решена проблема?
    На самом деле очень сложно по паре примеров решать. Да еще с таким корявым описанием. Вообще учись составлять тз для регулярок. Попробую сделать это за тебя:
    (начало строки )(любая буква латиница) (набор из нескольких одинаковых цифр) (набор из 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- Повторения не разделены, и на сколько я знаю (а может я просто не достаточно знаю) найти такое повторение в массиве врядли реально. Если только уже использовать средства языка.