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
相关产品推荐
相关产品推荐

