首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QRegExp在调试结果中获得复制

QRegExp在调试结果中获得复制
EN

Stack Overflow用户
提问于 2016-10-12 04:24:51
回答 1查看 104关注 0票数 1

我的代码是:

代码语言:javascript
复制
QString strExp="Sum(2+3)-Sum(5+3)";

QRegExp regexp("(Sum\\([^)]*\\))");
regexp.indexIn(strExp);

QStringList lst=regexp.capturedTexts();
qDebug()<<"CapturedCounts:"<<regexp.captureCount();

qDebug()<<lst;

我获得了捕获计数为1和qstring列表调试输出,如下所示

代码语言:javascript
复制
("Sum(2+3)", "Sum(2+3)").

为什么?

EN

回答 1

Stack Overflow用户

发布于 2016-10-12 07:05:29

QRegExp::capturedTexts()列表的第一个元素是整个匹配的字符串。

医生说:

QStringList QRegExp::capturedTexts() const 返回捕获的文本字符串的列表。 列表中的第一个字符串是整个匹配的字符串。每个后续的list元素都包含一个字符串,该字符串与regexp的(捕获)子表达式相匹配。

另一个例子是:

代码语言:javascript
复制
QString s = "abcd123";
QRegExp re("(ab).*(12)");

qDebug() << "indexIn:" << re.indexIn(s);
qDebug() << "captureCount:" << re.captureCount();
qDebug() << "capturedTexts:" << re.capturedTexts();

产出将是:

代码语言:javascript
复制
indexIn: 0 
captureCount: 2 
capturedTexts: ("abcd12", "ab", "12") 

如果您想获得所有匹配,可以使用以下命令:

代码语言:javascript
复制
QString strExp="Sum(2+3)-Sum(5+3)";

QRegExp regexp("(Sum\\([^)]*\\))");
regexp.indexIn(strExp);

QStringList list;
int pos = 0;

while ((pos = regexp.indexIn(strExp, pos)) != -1) {
    list << regexp.cap(1);
    pos += regexp.matchedLength();
}

qDebug() << "all matches:" << list;

输出:

代码语言:javascript
复制
all matches: ("Sum(2+3)", "Sum(5+3)") 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39990512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档