Поиск в контейнере по регулярному выражению

Тема в разделе "LANGS.C", создана пользователем _DEN_, 13 ноя 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Что-то не могу сообразить... Можно ли организовать поиск в контейнере строк нужной строки по регулярному выражению с более лучшей сложностью, чем o(n)?
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    На самом деле все еще хуже. Есть контейнер регулярных выражений и нужно найти, какому из них соответствует заданная строка...
     
  3. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    На самом деле еще хуже. Может быть ситуация хуже O(N) :)
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ustus

    Это как? N - количество регекспов.
     
  5. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    _DEN_
    Я имею ввиду, что сам поиск по одному регэкспу может потребовать нелинейного времени, регэкспы, они разные бывают :)
     
  6. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    если паттерны не слишком сложные и достаточно различные, то можно написать чтото вроде
    (паттерн1)|(паттерн2)| ... |(паттернN)
    а в выводе матча смотреть какой именно подпаттерн найден

    кроме того, существуют трансляторы регехпов в сорцы на С. правда там не самые мощные регехп словари используются