Регулярные выражения поддерживают гораздо больше, чем подстановочные знаки. A trie обычно можно использовать для сопоставления префиксов, если они уникальны, но для соответствия логическому ИЛИ списка альтернатив, посмотрите на что-то вроде Aho-Corasick algorithm.
Однако эти алгоритмы/структуры данных учитывают только статическую часть поиска, то есть сопоставляют предсказуемые строки. Для сопоставления подстановочных знаков, если вы разрешаете произвольное обратное отслеживание, вы можете получить патологическую производительность, а это означает, что использование полной системы регулярных выражений в маршрутном маршрутизаторе, вероятно, не является хорошей идеей, поскольку это может привести к отказу в обслуживании.
Откажитесь от this write up о том, как Go преобразует регулярные выражения (хотя и ограниченной формы) в NFA с использованием Thmopson's construction.