我正在努力实现一个正则表达式。我在Ubuntu系统上使用Qt创建者。我用第三方工具测试了我的正则表达式。所以我相信问题不在于表达。我想要的前夫:
/\b(9410 ?d{18})\b/i
我将正则字符串放入一个QString变量中。它会导致一个错误:
QString test = "/\b(9410 ?\d{18})\b/i";未知的转义序列'\d‘
在试图修复的过程中,我在错误点添加了一个额外的\:
QString测试= "/\b(9410 ?d{18})\b/i“;qWarning() <<检验;
调试器指示(注意\):
/\b(9410 ?d{18})\b/i
我还尝试了一个原始字符串:
QString检验= R"(/\b(9410 ?d{18})\b/i)“;qWarning() <<检验;
调试器显示所有单一\替换为\。
/\b(9410 ?d{18})\b/i
所有这些尝试都没有导致工作上的失败。后面的斜杠有可疑的地方。感谢你的想法。我一定错过了一些简单的东西..。
编辑:这是一些简化的代码。当我运行它时,它返回"FALSE“,表示没有匹配。我在regex101.com上测试了这个正则表达式和数字。在那里工作。这就是为什么我相信在我的实现中有些东西是有缺陷的。只是不能把我的手指放在上面。
QRegularExpression re;
QString test = R"(/\b(9410 ?\d{18})\b/i)";
re.setPattern(test);
if(re.match("9410811298370146293071").hasMatch())
{
qWarning() << "TRUE";
}
else {
qWarning() << "FALSE";
}发布于 2018-12-26 16:08:49
清理了横梁,现在匹配了。
QRegularExpression re;
QString test = R"(9410 ?\d{18})";
re.setPattern(test);
if(re.match("9410811298370146293071").hasMatch())
{
qWarning() << "TRUE";
}
else {
qWarning() << "FALSE";
}https://stackoverflow.com/questions/53928550
复制相似问题