Всем привет.
Есть ли где-то такие регулярки для C++, чтобы их можно было скомпилировать, а
затем в этом скомпилированном состоянии сбросить на диск для последующего
использования ?
Грубо говоря, есть база из примерно миллиона регулярок, хочется взять boost::xpressive,
выполнить ко всем элементам базы regex::compile и в таком состоянии все это сериализировать.
Смысл в том, что каждый раз при запуске программы делать regex::compile для всей базы накладно —
это выливается в весьма нехилое ожидание порядка минуты. В то же время
скомпилированные регэкспы работают очень шустро, из-за чего и сыр-бор, собственно.
Отложенные вычисления не предлагайте — специфика задачи не позволяет.
Спасибо.
Здравствуйте, okman, Вы писали:
O>Всем привет.
O>Есть ли где-то такие регулярки для C++, чтобы их можно было скомпилировать, а
O>затем в этом скомпилированном состоянии сбросить на диск для последующего
O>использования ?
мне кажется, что проще всего взять любую либу, которая компилит регулярки, скомпилить запрос и выданную структурку руками сериализовать на диск (придется поковыряться в потрохах самой либы)
наверняка, вы так пробовали. с какими проблемами столкнулись? я вижу центральную сложность — разобраться в потрохах
Здравствуйте, okman, Вы писали:
Помнится это вот:
http://www.codeproject.com/KB/string/spencerregexp.aspx
компилирует RE в самодостаточный bytecode. Который можно сохранять как есть.
Здравствуйте, okman, Вы писали:
O>Всем привет.
O>Есть ли где-то такие регулярки для C++, чтобы их можно было скомпилировать, а
O>затем в этом скомпилированном состоянии сбросить на диск для последующего
O>использования ?
Когда то задавался этим вопросом, для саморазвития. Вроде, овчинка выделки не стоит, выигрыша нет.
По теме для pcre:
http://www.manpagez.com/man/3/pcreprecompile.
http://stackoverflow.com/questions/4499808/how-to-save-serialize-compiled-regular-expression-stdregex-to-a-file
Здравствуйте, uzhas, Вы писали:
U>мне кажется, что проще всего взять любую либу, которая компилит регулярки, скомпилить запрос и выданную структурку руками сериализовать на диск (придется поковыряться в потрохах самой либы)
U>наверняка, вы так пробовали. с какими проблемами столкнулись? я вижу центральную сложность — разобраться в потрохах
Да, так оно и есть (о потрохах).
Я использую boost::xpressive.
Есть база правил, описанных регулярными выражениями.
Сами правила несложные, но их может быть достаточно много (полмиллиона — вполне).
Когда поступает запрос, нужно "прогнать" строку через эти правила для выяснения под
какое именно правило она попадает (match).
В xpressive копаться неохота, тем более что boost не стоит на месте, развивается —
кто знает что будет в следующей версии этой xpressive...
On 14.04.2011 22:32, okman wrote:
> *Есть ли где-то такие регулярки для C++, чтобы их можно было скомпилировать, а
> затем в этом скомпилированном состоянии сбросить на диск для последующего
> использования ?*
Есть для этого ANTLR.
Posted via RSDN NNTP Server 2.1 beta