You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QRegularExpression正则表达式无法正确捕获引号内内容,捕获组为空的问题求助

QRegularExpression正则表达式无法正确捕获引号内内容,捕获组为空的问题求助

我现在在使用Qt C++库的QRegularExpression,想要从下面的字符串中提取出ABC这个词(注:字符串里确实包含转义后的引号):

\"ABC\" <DEF>

对应的C++ QString字面量写法是:

QString subject = "\\\"ABC\\\" <DEF>";

我定义了这样的正则表达式:

QRegularExpression regex("\\\"([^\\]*)\\\"");

但这个正则就是匹配不了上面的字符串字面量!我在几个在线正则测试工具里试过,明明可以正常匹配,捕获组也能拿到ABC,但在C++代码里,捕获组始终是空的。

我怀疑是转义字符(\)的问题,但实在找不到问题出在哪。


更新1:我还尝试了使用原始字符串字面量来定义正则,结果还是一样:

QRegularExpression regex(R""([^\\]*)"");

更新2:
这会不会是QRegularExpression的bug?目前我用下面的临时解决方法可以实现需求,但还是把问题留在这里,希望有人能解释为什么上面的正则写法无法正常工作。

QStringList pieces = subject.split("\\\"");
if (pieces.size() >= 3) cap = pieces.at(1);

备注:内容来源于stack exchange,提问作者TSG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:12:59