例如我有一个QString,我会在一段时间内搜索mathes。如何检索匹配在源字符串中的位置?
QString str = ...;
QRegularExpression re(...);
int pos = 0;
QRegularExpressionMatch match;
while ((match = re.match(str, pos)).hasMatch()) {
setting new pos somehow
...
}
答案 0 :(得分:3)
http://doc.qt.io/qt-5/qregularexpressionmatch.html:
此外,QRegularExpressionMatch返回模式字符串中捕获组捕获的子字符串。索引为0的隐式捕获组捕获整个匹配的结果。
对于每个捕获的子字符串,可以分别通过调用 capturedStart ()和 capturedEnd ()函数来查询主题字符串中的起始和结束偏移量。使用capturedLength()函数可以获得每个捕获的子字符串的长度。
示例:
QRegularExpression re("\\d+");
QRegularExpressionMatch match = re.match("XYZabc123defXYZ");
if (match.hasMatch()) {
int startOffset = match.capturedStart(); // startOffset == 6
int endOffset = match.capturedEnd(); // endOffset == 9
// ...
}