Qt 的正则表达式与预期不匹配
Regular expression of Qt don't match as expected
为什么Qt的正则表达式有点不一样?我在正则匹配软件中可以正确匹配,但是在Qt中不能。
例如。
QString tstring = "scale(1.1) rotate(180) translate(1,0)";
QRegExp re("(?<=[\)]).");
QStringList tlist = tstring.split(re);
我想把三个用空格隔开得到三个QString "scale(1.1)", "rotate(180)" "translate(1,0)"
存在不同的正则表达式语法。 Qt 实现了其中的一些:
QRegularExpression
(>= Qt5): 实现 Perl 兼容的正则表达式
QRegExp
: implements multiple regular expression forms, see QRegExp::PatternSyntax
QRegExp::RegExp
(默认值):Qt 的正则表达式语言以 Perl 的正则表达式语言为模型
QRegExp::Wildcard
:类似于shell使用的通配符。
QRegExp::W3CXmlSchema11
:W3C XML Schema 1.1 规范的实现。
- ...
注意 QRegularExpression
is the recommended one:
The QRegularExpression class introduced in Qt 5 is a big improvement
upon QRegExp, in terms of APIs offered, supported pattern syntax and
speed of execution.
有关 QRegExp
和 QRegularExpression
之间差异的详细概述,请参阅 docs。
为什么Qt的正则表达式有点不一样?我在正则匹配软件中可以正确匹配,但是在Qt中不能。 例如。
QString tstring = "scale(1.1) rotate(180) translate(1,0)";
QRegExp re("(?<=[\)]).");
QStringList tlist = tstring.split(re);
我想把三个用空格隔开得到三个QString "scale(1.1)", "rotate(180)" "translate(1,0)"
存在不同的正则表达式语法。 Qt 实现了其中的一些:
QRegularExpression
(>= Qt5): 实现 Perl 兼容的正则表达式QRegExp
: implements multiple regular expression forms, seeQRegExp::PatternSyntax
QRegExp::RegExp
(默认值):Qt 的正则表达式语言以 Perl 的正则表达式语言为模型QRegExp::Wildcard
:类似于shell使用的通配符。QRegExp::W3CXmlSchema11
:W3C XML Schema 1.1 规范的实现。- ...
注意 QRegularExpression
is the recommended one:
The QRegularExpression class introduced in Qt 5 is a big improvement upon QRegExp, in terms of APIs offered, supported pattern syntax and speed of execution.
有关 QRegExp
和 QRegularExpression
之间差异的详细概述,请参阅 docs。