Использование tr1 :: regex_search для сопоставления большого списка строк

Мне нужно соответствовать любой из списка строк, и мне интересно, могу ли я просто использовать регулярное выражение, что-то вроде "item1|item2|item3|..." вместо того, чтобы просто сделать отдельный strstr() для каждой строки. Но список может быть довольно большим — до 10000 наименований. Будет ли регулярное выражение работать хорошо с этим? Будет ли это быстрее, чем искать каждую строку отдельно?

0

Решение

Регулярное выражение будет работать и, безусловно, будет быстрее, чем поиск по каждой строке. Хотя я не уверен, сколько памяти или времени займет начальная установка, учитывая 10000 шаблонов ввода.

Однако это общеизвестная проблема, и существует множество специфических алгоритмов, например:

и несколько других. У них у всех разные компромиссы, так что выбирайте яд.

В нашем проекте нам требовалось решение с множественной заменой, поэтому мы выбрали алгоритм Aho-Corasick и построили на нем функцию замены.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]