c++ - Qt 的正则表达式与预期不匹配
问题描述
为什么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
: 实现多种正则表达式形式,见QRegExp::PatternSyntax
QRegExp::RegExp
(默认):Qt 的正则表达式语言模仿 Perl 的正则表达式语言QRegExp::Wildcard
: 类似于 shell 使用的通配符。QRegExp::W3CXmlSchema11
:W3C XML Schema 1.1 规范的实现。- ...
请注意,这QRegularExpression
是推荐的:
Qt 5 中引入的 QRegularExpression 类在提供的 API、支持的模式语法和执行速度方面是对 QRegExp 的重大改进。
可以在docsQRegExp
中找到和之间差异的详细概述。QRegularExpression
推荐阅读
- python - 拆分字符串的最后两位
- android - 如何避免软键盘在 Android 中向上推按钮(iOS 可以)
- c# - 仅显示与用户属于同一教师的候选人
- java - Increase a Counter using 2 threads
- python-3.x - 将事件和边框宽度绑定到列表框条目
- google-apps-script - 我可以设置一个函数/脚本,当另一个单元格更新时将在单元格中返回一个日期 - Google 表格?
- python - 使用 Pygame 为网格中的正方形着色,但只能为第一个框着色,不知道该怎么做
- rust - 没有多个按钮系统的多个按钮?
- javascript - NPM 错误:必须是实际的 JSON,而不仅仅是 JavaScript
- ios - Flutter - iOS - 将用户名和密码保存到 webcredentials 以进行自动填充