正则表达式 C++ Qt

8
QRegExp rx("\\btest\\b");
rx.indexIn("this is a test string");
QString captured = rx.cap(1);
std::string capturedstr = captured.toUtf8().constData();
std::cout << capturedstr;

我希望上面的代码输出 "test" 并在字符串中匹配单词 "test",但似乎并没有这样做。请问有人能够解决这个问题吗?使用 QT。


在Qt中使用正则表达式时,RegExp示例程序(位于$YOUR_QT_DIR\examples\tools\regexp\release)非常有帮助。它允许您输入正则表达式并测试结果而无需重新编译。文档在此 - docsteer
谢谢@docsteer,这个例子在我们设计正则表达式时非常有帮助。在Qt5.2.1中,它位于此处:$QT_DIR/examples/widgets/tools/regexp/release。 - toussa
2个回答

10

你的正则表达式中没有任何捕获括号,因此没有捕获组1。请尝试使用以下代码:

QRegExp rx("\\b(test)\\b");

3
或者使用rx.cap(0)来访问整个匹配。 - Tim Pietzcker

1

rx.cap(1)替换为rx.cap(0),整个匹配的索引为0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接