Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: QCasper от Июнь 22, 2011, 16:56



Название: Регулярка для арабских слов
Отправлено: QCasper от Июнь 22, 2011, 16:56
Помогите, пож., составить регулярку, по которой будут совпадать любые арабские слова, типа как в кириллице [А-Яа-я]+.


Название: Re: Регулярка для арабских слов
Отправлено: kambala от Июнь 22, 2011, 18:42
http://www.regular-expressions.info/refunicode.html это?


Название: Re: Регулярка для арабских слов
Отправлено: QCasper от Июнь 22, 2011, 21:21
Посмотрел. Такой код:
Код:
QRegExp a("\\p{Arabic}");
qDebug() << a.exactMatch("ل");
печатает false.


Название: Re: Регулярка для арабских слов
Отправлено: ритт от Июнь 22, 2011, 22:52
L2 Unicode в QRegExp не поддерживается (пока). смотрите в сторону PCRE


Название: Re: Регулярка для арабских слов
Отправлено: QCasper от Июнь 23, 2011, 17:26
Вобщем, вот так работает:
Код:
QRegExp("\\p{IsArabic}+", Qt::CaseSensitive, QRegExp::W3CXmlSchema11);
То есть 3-й параметр (Pattern Syntax) решил проблему.


Название: Re: Регулярка для арабских слов
Отправлено: ритт от Июнь 23, 2011, 18:59
странно...насколько я помню, кьют даже скрипты нормально определить может лишь для кодепоинтов <= 0xffff, да и то только ширпотребные...
либо я давно в QRegExp не заглядывал, либо там унутрях нахардкодили, либо проблема решена частично - срабатывает ли данное выражение для кодепоинтов 0x10E60-0x10E7E или для 0x061B ?


Название: Re: Регулярка для арабских слов
Отправлено: QCasper от Июнь 30, 2011, 16:05
или для 0x061B ?
Этот код соответствует арабской точке с запятой, насколько я понял.
Код:
QRegExp a("\\p{IsArabic}+", Qt::CaseSensitive, QRegExp::W3CXmlSchema11);
qDebug() << a.exactMatch(QString::fromUtf8("؛"));
- печатает true.


Название: Re: Регулярка для арабских слов
Отправлено: ритт от Июнь 30, 2011, 18:13
oops
я имел в виду 0x063B (апычатка, звыняйте) )
или какой-нибудь 0xFBC1