QRegularExpressionMatchIterator 类
QRegularExpressionMatchIterator 类提供了一个迭代器,用于遍历 QRegularExpression 对象在字符串上的全局匹配结果。 更多信息...
头文件 | #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) | |
(自 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=(const QRegularExpressionMatchIterator &iterator) |
QRegularExpressionMatchIterator & | operator=(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 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)) { // ... }
您可以通过调用QRegularExpression()函数检索被主题字符串匹配的QRegularExpression对象;同时,通过调用matchType()和matchOptions()可以获得匹配类型和匹配选项。
有关Qt正则表达式类的更多信息,请参阅QRegularExpression的文档。
参见QRegularExpression和QRegularExpressionMatch。
成员函数文档
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator()
构造一个空的有效QRegularExpressionMatchIterator对象。正则表达式被设置为默认构造的一个;匹配类型为QRegularExpression::NoMatch,匹配选项为QRegularExpression::NoMatchOption。
在构造对象上调用hasNext()成员函数将返回false,因为迭代器不是在有效的匹配序列上迭代。
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator)
构造一个QRegularExpressionMatchIterator对象,作为iterator的副本。
参见操作符=。
[noexcept, since 6.1]
QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(QRegularExpressionMatchIterator &&iterator)
通过移动自iterator构造一个QRegularExpressionMatchIterator对象。
注意,自移动的QRegularExpressionMatchIterator只能被销毁或赋值。调用除了析构函数或赋值运算符之外的其他函数的效果是未定义的。
此函数自Qt 6.1开始引入。
参见操作符=。
[noexcept]
QRegularExpressionMatchIterator::~QRegularExpressionMatchIterator()
销毁QRegularExpressionMatchIterator对象。
bool QRegularExpressionMatchIterator::hasNext() const
如果迭代器前面至少有一个匹配结果,则返回true
;否则返回false
。
参见next。
bool QRegularExpressionMatchIterator::isValid() const
如果迭代器对象是从在有效的QRegularExpression对象上调用QRegularExpression::globalMatch()函数的结果获得;如果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
返回QRegularExpression对象,其globalMatch()函数返回此对象。
另请参阅QRegularExpression::globalMatch,matchType和matchOptions。
[noexcept]
void QRegularExpressionMatchIterator::swap(QRegularExpressionMatchIterator &other)
交换迭代器other与此迭代器对象。此操作非常快且永远不会失败。
QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(const QRegularExpressionMatchIterator &iterator)
将迭代器iterator赋值给此对象,并返回对副本的引用。
[noexcept]
QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(QRegularExpressionMatchIterator &&iterator)
移动赋值将iterator移动到此对象中,并返回对结果的重引用。
请注意,已移动的QRegularExpressionMatchIterator只能被销毁或赋值。调用析构函数或赋值运算符之外的其他函数的效果是未定义的。
© 2024 Qt公司有限公司。本文档中包含的文档贡献属于各自所有者的版权。本提供的文档是根据自由软件基金会发布的《GNU自由文档许可证》版本1.3的条款许可的,许可链接为http://www.gnu.org/licenses/fdl.html。Qt及其相关标志是芬兰及/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。