Группировка В Символьных Классах Regexp

Тема в разделе "PHP программирование", создана пользователем Brabus, 27 ноя 2011.

  1. Brabus

    Brabus New Member

    Регистрация:
    17 мар 2008
    Сообщения:
    2
    Симпатии:
    0
    Добрый день :facepalm: Вопрос по регулярным выражениям.
    Подскажите пожалуйста варианты решения проблемы. Связана она с исключающими символьными классами [ ... ].
    Вот например, паттерн
    Код ( (Unknown Language)):
    /[^abcd]/
    соответствует любому символу в строке, за исключением этих четырех букв. Например: alphabet
    Мне необходимо сгруппировать символы в этом исключающем списке, написать что-то типа
    Код ( (Unknown Language)):
    /[^(ab)(cd)]/
    , чтобы из строки выбрать все, за исключением этих двух последовательностей.
    Чтобы было: alphabet
    Т.е. надо найти все слова, в которых нет конкретной последовательности символов, например (ab) или (cd).

    А по факту получается, что круглые собки в символьном классе понимаются как обычные литералы, и как и прежде паттерн исключает вхождение всех 4-х букв по-отдельности.
    Подскажите, как это можно реализовать, каким регексом?
     
  2. typak

    typak Гость

    Может просто заменить?

    Код (PHP):
    echo preg_replace("/(:?ab|cd)/", "" ,"alphabetcdabd");
    .

    получится вроде тотже результат!
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    А почему не просто: /(ab|cd)/ ?
     
  4. typak

    typak Гость

    можно и так

    Так скобки сохраняющие лишняя нагрузка
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Поправка: не :)?ab|cd) а (?:ab|cd) !!!
     
  6. typak

    typak Гость

    Ну да я случайно перепутал
     
Загрузка...

Поделиться этой страницей