qt 使用正则表达式时候出现的问题,求指点

振星 2013-10-31 05:09:45
在使用正则的时候,发现是不是Qt正则规则和其他语言的不一样?

需求如下:
待检字串:(23) P ((1) @)
期望出现的结果是(23) 和(1) 带括号

代码如下:

QRegExp rx("\([0-9]+\)");
QString = "(23) P ((1) @)";
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
list << rx.cap(1);
pos += rx.matchedLength();
}


提示警告:
warning: unknown escape sequence: '\)' [enabled by default]

自然结果也是不对的了。。

真的很奇怪。
我使用一些其他正则测试软件,以及正则在线测试,都是可以获取期望的值。如下图:



请各位指教,在线等 非常感谢

...全文
322 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RabinSong 2013-10-31
  • 打赏
  • 举报
回复
这样可以输出(23) 和 (1)
RabinSong 2013-10-31
  • 打赏
  • 举报
回复
QRegExp rx("\\([0-9]+\\)"); QString str = "(23) P ((1) @)"; int pos = 0; while ((pos = rx.indexIn(str, pos)) != -1) { //list << rx.cap(1); qDebug() << rx.cap(); pos += rx.matchedLength(); } 这样可以
振星 2013-10-31
  • 打赏
  • 举报
回复
引用 1 楼 LazyDreamHunter 的回复:
QRegExp rx("\([0-9]+\)"); QString str = "(23) P ((1) @)"; int pos = 0; while ((pos = rx.indexIn(str, pos)) != -1) { //list << rx.cap(1); qDebug() << rx.cap(1); pos += rx.matchedLength(); }
我期望获取的是(23) 和 (1) 不是23 和1
RabinSong 2013-10-31
  • 打赏
  • 举报
回复
我测式了下,输出 "23" "1"
RabinSong 2013-10-31
  • 打赏
  • 举报
回复
QRegExp rx("\([0-9]+\)"); QString str = "(23) P ((1) @)"; int pos = 0; while ((pos = rx.indexIn(str, pos)) != -1) { //list << rx.cap(1); qDebug() << rx.cap(1); pos += rx.matchedLength(); }

16,814

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧