2010-05-12 2 views
3

Я конвертирую приложение из .Net в Qt с помощью C++. Применение широко использует regular expression unicode properties, т.е. \p{L}, \p{M} и т.д. Я только что обнаружил, что класс QRegExp не хватает поддержки для этого среди прочего (просмотра назад и т.д.)Библиотека регулярных выражений Qt/C++ с поддержкой свойств unicode

Можно ли рекомендовать C++ библиотека регулярных выражений, что:

  • поддерживает свойство юникода
  • ли юникод в других отношениях (т.е. \ ш совпадает с более символами ASCII слов)
  • в качестве бонуса, поддерживает просмотр назад.

Пожалуйста, не указывайте мне статью в Википедии; Я не верю этому. В этой статье говорится, что QRegExp поддерживает свойства unicode. Если я действительно не ошибаюсь, это не так. Я ищу кого-то, кто действительно использует свойства unicode с библиотекой регулярных выражений в проекте.

+0

Испытывали ли вы все PatternSyntaxes? Помните, что QRegExp :: PatternSyntax по умолчанию QRegExp :: RegExp, попробуйте его с помощью QRegExp :: RegExp2, это расширенная версия нормального rx. –

+0

Да, я пробовал как RegExp, так и RegExp2; нет разницы. –

ответ

4

http://site.icu-project.org/

ICU является зрелым, широко используемым набором C/C++ и Java библиотек, обеспечивающих Unicode и глобализация поддержки программных приложений.

  • выпустили под неограничительного лицензии с открытым исходным кодом
  • ...
  • Регулярное выражение: регулярные выражения Icu в полной мере поддерживают Unicode , обеспечивая при этом очень конкурентоспособный производительность.

Он также совместим с Boost см their statement in this regard.

+0

Отлично; только то, что я искал. Отлично работает, хотя у меня был медведь времени, чтобы его собрать и связать на OS X! Благодаря! –

+0

@ Если у вас возникли проблемы, пожалуйста, сообщите об ошибке. Я занимаюсь своей основной разработкой на OSX, а ICU встроен в OSX. –

0

Не должно быть ничего, что могло бы помешать вам использовать PCRE (http://www.pcre.org/), хотя преобразование из QStrings в const char * s может быть причиной боли/производительности.