Qt 里正则表达式使用 QRegularExpression,可以使用正则表达式查找字符串,QString 中可以使用正则表达式 QRegularExpression 进行字符串替换,拆分等。
查找字符串中的 URL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <QDebug> #include <QRegularExpression>
int main(int argc, char *argv[]) { QRegularExpression regExp("http://.+?\\.(com\\.cn|com)");
QRegularExpressionMatch match1 = regExp.match("请把http://www.baidu.com和http://www.sina.com.cn打开看看"); qDebug() << match1.captured(0);
QRegularExpressionMatchIterator iter = regExp.globalMatch("请把http://www.baidu.com和http://www.sina.com.cn打开看看");
while (iter.hasNext()) { QRegularExpressionMatch match2 = iter.next(); qDebug() << match2.captured(0); }
return 0; }
|
输出
1 2 3
| "http://www.baidu.com" "http://www.baidu.com" "http://www.sina.com.cn"
|
字符串替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <QDebug> #include <QRegularExpression>
int main(int argc, char *argv[]) { QString s = "Banana"; s.replace(QRegularExpression("a[mn]"), "ox"); qDebug() << s;
QString t = "A <i>bon mot</i>."; t.replace(QRegularExpression("<i>([^<]*)</i>"), "\\emph{\\1}"); qDebug() << t;
return 0; }
|
字符串拆分
1 2 3 4 5 6 7 8 9 10
| #include <QDebug> #include <QRegularExpression>
int main(int argc, char *argv[]) { QString str = "Some text\n\twith strange whitespace.";; QStringList list = str.split(QRegularExpression("\\s+")); qDebug() << list;
return 0; }
|