Russian Qt Forum
Сентябрь 21, 2024, 23:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Регулярка для арабских слов  (Прочитано 5757 раз)
QCasper
Гость
« : Июнь 22, 2011, 16:56 »

Помогите, пож., составить регулярку, по которой будут совпадать любые арабские слова, типа как в кириллице [А-Яа-я]+.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Июнь 22, 2011, 18:42 »

http://www.regular-expressions.info/refunicode.html это?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
QCasper
Гость
« Ответ #2 : Июнь 22, 2011, 21:21 »

Посмотрел. Такой код:
Код:
QRegExp a("\\p{Arabic}");
qDebug() << a.exactMatch("ل");
печатает false.
Записан
ритт
Гость
« Ответ #3 : Июнь 22, 2011, 22:52 »

L2 Unicode в QRegExp не поддерживается (пока). смотрите в сторону PCRE
Записан
QCasper
Гость
« Ответ #4 : Июнь 23, 2011, 17:26 »

Вобщем, вот так работает:
Код:
QRegExp("\\p{IsArabic}+", Qt::CaseSensitive, QRegExp::W3CXmlSchema11);
То есть 3-й параметр (Pattern Syntax) решил проблему.
Записан
ритт
Гость
« Ответ #5 : Июнь 23, 2011, 18:59 »

странно...насколько я помню, кьют даже скрипты нормально определить может лишь для кодепоинтов <= 0xffff, да и то только ширпотребные...
либо я давно в QRegExp не заглядывал, либо там унутрях нахардкодили, либо проблема решена частично - срабатывает ли данное выражение для кодепоинтов 0x10E60-0x10E7E или для 0x061B ?
Записан
QCasper
Гость
« Ответ #6 : Июнь 30, 2011, 16:05 »

или для 0x061B ?
Этот код соответствует арабской точке с запятой, насколько я понял.
Код:
QRegExp a("\\p{IsArabic}+", Qt::CaseSensitive, QRegExp::W3CXmlSchema11);
qDebug() << a.exactMatch(QString::fromUtf8("؛"));
- печатает true.
Записан
ритт
Гость
« Ответ #7 : Июнь 30, 2011, 18:13 »

oops
я имел в виду 0x063B (апычатка, звыняйте) )
или какой-нибудь 0xFBC1
« Последнее редактирование: Июнь 30, 2011, 18:16 от Константин » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 23.