QRegularExpressionMatchIterator Class
QRegularExpressionMatchIterator 类为QRegularExpression 对象与字符串的全局匹配结果提供了一个迭代器。更多
Header: | #include <QRegularExpressionMatchIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- QRegularExpressionMatchIterator 属于隐式共享类和字符串数据类。
注意:该类中的所有函数都是可重入的。
公共函数
QRegularExpressionMatchIterator() | |
QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator) | |
(since 6.1) | QRegularExpressionMatchIterator(QRegularExpressionMatchIterator &&iterator) |
~QRegularExpressionMatchIterator() | |
bool | hasNext() const |
bool | isValid() const |
QRegularExpression::MatchOptions | matchOptions() const |
QRegularExpression::MatchType | matchType() const |
QRegularExpressionMatch | next() |
QRegularExpressionMatch | peekNext() const |
QRegularExpression | regularExpression() const |
void | swap(QRegularExpressionMatchIterator &other) |
QRegularExpressionMatchIterator & | operator=(QRegularExpressionMatchIterator &&iterator) |
QRegularExpressionMatchIterator & | operator=(const QRegularExpressionMatchIterator &iterator) |
详细说明
QRegularExpressionMatchIterator 对象是一个类似于 Java 的正向迭代器;可通过调用QRegularExpression::globalMatch() 函数获得。一个新的 QRegularExpressionMatchIterator 将被放置在第一个结果之前。然后,可以调用hasNext() 函数检查是否有更多可用结果;如果有,next() 函数将返回下一个结果,并向前推进迭代器。
每个结果都是一个QRegularExpressionMatch 对象,其中包含该结果的所有信息(包括捕获的子串)。
例如
// extracts the words QRegularExpression re("(\\w+)"); QString subject("the quick fox"); QRegularExpressionMatchIterator i = re.globalMatch(subject); while (i.hasNext()) { QRegularExpressionMatch match = i.next(); // ... }
此外,QRegularExpressionMatchIterator 还提供了一个peekNext() 函数,用于在不推进迭代器的情况下获取下一个结果。
从 Qt XML 6.0 开始,也可以在基于范围的 for 循环中简单地使用QRegularExpression::globalMatch 的结果,例如像这样:
// using a raw string literal, R"(raw_characters)", to be able to use "\w" // without having to escape the backslash as "\\w" QRegularExpression re(R"(\w+)"); QString subject("the quick fox"); for (const QRegularExpressionMatch &match : re.globalMatch(subject)) { // ... }
您可以通过调用regularExpression() 函数来获取与主题字符串匹配的QRegularExpression 对象;还可以通过分别调用matchType() 和matchOptions() 来获取匹配类型和匹配选项。
有关 Qt XML 正则表达式类的更多信息,请参阅QRegularExpression 文档。
另请参阅 QRegularExpression 和QRegularExpressionMatch 。
成员函数文档
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator()
构造一个空的有效 QRegularExpressionMatchIterator 对象。正则表达式被设置为默认构造的正则表达式;匹配类型被设置为QRegularExpression::NoMatch ,匹配选项被设置为QRegularExpression::NoMatchOption 。
在构造的对象上调用hasNext() 成员函数将返回 false,因为迭代器不是在一个有效的匹配序列上迭代。
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator)
构造一个 QRegularExpressionMatchIterator 对象,作为iterator 的副本。
另请参阅 operator=().
[noexcept, since 6.1]
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(QRegularExpressionMatchIterator &&iterator)
通过从iterator 移动来构造一个 QRegularExpressionMatchIterator 对象。
请注意,从移动的 QRegularExpressionMatchIterator 只能被销毁或赋值。调用析构函数或赋值操作符之外的其他函数的效果未定义。
此函数在 Qt 6.1 中引入。
另请参阅 operator=()。
[noexcept]
QRegularExpressionMatchIterator::~QRegularExpressionMatchIterator()
销毁QRegularExpressionMatchIterator 对象。
bool QRegularExpressionMatchIterator::hasNext() const
如果迭代器前面至少有一个匹配结果,则返回true
;否则返回false
。
另请参见 next() 。
bool QRegularExpressionMatchIterator::isValid() const
如果迭代器对象是在有效的QRegularExpression 对象上调用QRegularExpression::globalMatch() 函数的结果,则返回true
;如果QRegularExpression 无效,则返回false
。
另请参阅 QRegularExpression::globalMatch() 和QRegularExpression::isValid()。
QRegularExpression::MatchOptions QRegularExpressionMatchIterator::matchOptions() const
返回用于获取QRegularExpressionMatchIterator 对象的匹配选项,即传递给QRegularExpression::globalMatch() 的匹配选项。
另请参阅 QRegularExpression::globalMatch()、regularExpression() 和matchType()。
QRegularExpression::MatchType QRegularExpressionMatchIterator::matchType() const
返回用于获取QRegularExpressionMatchIterator 对象的匹配类型,即传递给QRegularExpression::globalMatch() 的匹配类型。
另请参阅 QRegularExpression::globalMatch()、regularExpression() 和matchOptions()。
QRegularExpressionMatch QRegularExpressionMatchIterator::next()
返回下一个匹配结果,并将迭代器向前推进一个位置。
注意: 当迭代器位于结果集的末尾时调用此函数会导致未定义的结果。
QRegularExpressionMatch QRegularExpressionMatchIterator::peekNext() const
在不移动迭代器的情况下返回下一个匹配结果。
注意: 当迭代器位于结果集末尾时调用此函数会导致未定义的结果。
QRegularExpression QRegularExpressionMatchIterator::regularExpression() const
返回其 globalMatch() 函数返回此对象的QRegularExpression 对象。
另请参见 QRegularExpression::globalMatch()、matchType() 和matchOptions()。
[noexcept]
void QRegularExpressionMatchIterator::swap(QRegularExpressionMatchIterator &other)
将此迭代器与other 互换。这一操作速度非常快,而且从未出现过故障。
[noexcept]
QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(QRegularExpressionMatchIterator &&iterator)
Move 将iterator 赋值给此对象,并返回结果的引用。
请注意,moved-fromQRegularExpressionMatchIterator 只能被销毁或赋值。调用析构函数或赋值操作符之外的其他函数的效果是未定义的。
QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(const QRegularExpressionMatchIterator &iterator)
将迭代器iterator 赋值给此对象,并返回副本的引用。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.