【问题标题】:How to match consecutive unicode with QRegExp?如何将连续的 unicode 与 QRegExp 匹配?
【发布时间】:2011-12-23 02:24:59
【问题描述】:

我查看了 Qt 的文档,它完全支持 unicode 与 \xhhhh 的匹配,但这样我只能匹配已知的 unicode,那么我如何识别 unicode 字符串?

谢谢!

@更新:

QString line;
if ( line.indexOf(QRegExp ("\\p{L}")) ) != -1 )
{
 /// blabla
}

它不起作用,我没有看到 if 内部的流程

【问题讨论】:

    标签: regex qt qt4


    【解决方案1】:

    我不知道Qt正则表达式,但根据doc

    QRegExp 以 Perl 的正则表达式语言为模型。它完全支持Unicode。

    我假设它应该支持 Unicode 属性、脚本和块。有关详细概述,请参阅www.regular-expressions.info

    你可以例如使用属性字母 \p{L} 将 unicode 代码点与属性字母匹配。要匹配仅由此类代码点组成的字符串,请使用类似这样的内容

    ^\p{L}+$
    

    【讨论】:

    • 如果你的字符串中有一个字母,你的表达式应该匹配(我假设 QRegExp 允许这种语法)。我不知道您将正则表达式与字符串匹配的语法是否正确以及您的行的内容是什么。用一个没有外来字母但有一个“正常”字母的字符串测试它,看看它是否匹配。
    • QRegExp r("^\\p{L}+$"); QString a("aaa"); qDebug()
    • 对于遇到此问题的 Qt5 用户,QRegularExpression{"^\\p{L}+$"} 有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多