QRegularExpressionMatch 类
QRegularExpressionMatch 类提供了对字符串进行正则表达式匹配的结果。更多信息...
头文件 | #include <QRegularExpressionMatch> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员列表,包括继承的成员
- QRegularExpressionMatch 是 隐式共享类 的一部分。
注意: 此类中所有函数都是 可重入的。
公开函数
QRegularExpressionMatch() | |
QRegularExpressionMatch(const QRegularExpressionMatch &match) | |
(since 6.1) | QRegularExpressionMatch(QRegularExpressionMatch &&match) |
~QRegularExpressionMatch() | |
QString | captured(int nth = 0) const |
QString | captured(const QString &name) const |
QString | captured(QStringView name) const |
qsizetype | capturedEnd(int nth = 0) const |
qsizetype | capturedEnd(const QString &name) const |
qsizetype | capturedEnd(QStringView name) const |
qsizetype | capturedLength(int nth = 0) const |
qsizetype | capturedLength(const QString &name) const |
qsizetype | capturedLength(QStringView name) const |
qsizetype | capturedStart(int nth = 0) const |
qsizetype | capturedStart(const QString &name) const |
qsizetype | capturedStart(QStringView name) const |
QStringList | capturedTexts() const |
QStringView | capturedView(int nth = 0) const |
QStringView | capturedView(QStringView name) const |
(since 6.3) bool | hasCaptured(const QString &name) const |
(since 6.3) bool | hasCaptured(QStringView name) const |
(since 6.3) bool | hasCaptured(int nth) const |
bool | hasMatch() const |
bool | hasPartialMatch() const |
bool | isValid() const |
int | lastCapturedIndex() const |
QRegularExpression::MatchOptions | matchOptions() const |
QRegularExpression::MatchType | matchType() const |
QRegularExpression | regularExpression() const |
void | swap(QRegularExpressionMatch &other) |
QRegularExpressionMatch & | operator=(const QRegularExpressionMatch &match) |
QRegularExpressionMatch & | operator=(QRegularExpressionMatch &&match) |
相关非成员
QDebug | operator<<(QDebug debug, const QRegularExpressionMatch &match) |
详细说明
可以通过调用QRegularExpression::match()函数获取一个QRegularExpressionMatch对象,或者在从QRegularExpressionMatchIterator中获取的全局匹配结果的单个结果。
可以通过调用hasMatch()函数检查匹配尝试的成功或失败。QRegularExpressionMatch还可以通过调用hasPartialMatch()函数报告部分匹配的成功。
此外,QRegularExpressionMatch返回由模式字符串中的捕获组捕获的子字符串。索引为0的隐式捕获组捕获整个匹配的结果。通过captured()函数,按捕获组的索引或名称返回每个捕获到的子字符串
QRegularExpression re("(\\d\\d) (?<name>\\w+)"); QRegularExpressionMatch match = re.match("23 Jordan"); if (match.hasMatch()) { QString number = match.captured(1); // first == "23" QString name = match.captured("name"); // name == "Jordan" }
对于每个捕获到的子字符串,可以通过调用capturedStart()和capturedEnd()函数分别查询其在主字符串中的起始和结束偏移量。可以通过capturedLength()函数获取每个捕获到的子字符串的长度。
便利函数capturedTexts()将一次性返回所有捕获到的子字符串(包括整个模式匹配的子字符串),按捕获组捕获的顺序排列;即captured(i) == capturedTexts().at(i)
。
您可以通过调用regularExpression()函数检索与主字符串进行匹配的QRegularExpression对象;通过调用matchType()和matchOptions(),可以分别获取匹配类型和匹配选项。
请参阅QRegularExpression文档,以获取有关Qt正则表达式类的更多信息。
另请参阅QRegularExpression.
成员函数文档
[自6.3起]
bool QRegularExpressionMatch::hasCaptured(QStringView name) const
[自6.3起]
bool QRegularExpressionMatch::hasCaptured(const QString &name) const
如果命名name的捕获组在主题字符串中捕获了某些内容,则返回true,否则返回false(或如果没有名为name的捕获组)。
注意:正则表达式中的一些捕获组可能没有捕获任何内容,即使正则表达式匹配。例如,如果模式中使用条件操作符,则可能发生这种情况。
QRegularExpression re("([a-z]+)|([A-Z]+)"); QRegularExpressionMatch m = re.match("UPPERCASE"); if (m.hasMatch()) { qDebug() << m.hasCaptured(0); // true qDebug() << m.hasCaptured(1); // false qDebug() << m.hasCaptured(2); // true }
类似地,捕获组可能捕获长度为0的子字符串;此函数将为此捕获组返回true
。
此函数是在Qt 6.3中引入的。
QRegularExpressionMatch::QRegularExpressionMatch()
构造一个有效的、空的 QRegularExpressionMatch 对象。正则表达式设置为默认构造的一个;匹配类型设为 QRegularExpression::NoMatch,匹配选项设为 QRegularExpression::NoMatchOption。
对象将通过 hasMatch() 和 hasPartialMatch() 成员函数报告无匹配。
QRegularExpressionMatch::QRegularExpressionMatch(const QRegularExpressionMatch &match)
通过复制给定 match 的结果来构造一个匹配结果。
另请参阅operator=。
[noexcept, since 6.1]
QRegularExpressionMatch::QRegularExpressionMatch(QRegularExpressionMatch &&match)
通过移动给定 match 的结果来构造一个匹配结果。
请注意,从已移动的 QRegularExpressionMatch 可以仅被销毁或赋值。调用除析构函数或赋值运算符之外的其他函数的行为是未定义的。
此函数从 Qt 6.1 版本开始引入。
另请参阅operator=。
[noexcept]
QRegularExpressionMatch::~QRegularExpressionMatch()
销毁匹配结果。
QString QRegularExpressionMatch::captured(int nth = 0) const
返回第 nth 个捕获组的子串。
如果第 nth 个捕获组没有捕获字符串,或者没有这样的捕获组,则返回一个空 QString。
注意:隐式捕获组编号 0 捕获整个模式的匹配子串。
另请参阅capturedView()、lastCapturedIndex()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull。
QString QRegularExpressionMatch::captured(const QString &name) const
返回名为 name 的捕获组的子串。
如果名为 name 的捕获组没有捕获字符串,或者没有命名为 name 的捕获组,则返回一个空 QString。
另请参阅capturedView()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull。
QStringView QRegularExpressionMatch::captured(QStringView name) const
返回名为 name 的捕获组的子串。
如果名为 name 的捕获组没有捕获字符串,或者没有命名为 name 的捕获组,则返回一个空 QString。
另请参阅capturedView()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull。
qsizetype QRegularExpressionMatch::capturedEnd(int nth = 0) const
返回在主题字符串中,紧接被第 nth 捕获组捕获的子字符串的结束位置之后的偏移量。如果第 nth 捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedStart(),capturedLength() 和 captured。
qsizetype QRegularExpressionMatch::capturedEnd(const QString &name) const
返回在主题字符串中,紧接被名为 name 的捕获组捕获的子字符串的结束位置之后的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedStart(),capturedLength() 和 captured。
qsizetype QRegularExpressionMatch::capturedEnd(QStringView name) const
返回在主题字符串中,紧接被名为 name 的捕获组捕获的子字符串的结束位置之后的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedStart(),capturedLength() 和 captured。
qsizetype QRegularExpressionMatch::capturedLength(int nth = 0) const
返回第 nth 捕获组捕获的子字符串的长度。
注意: 如果第 nth 捕获组没有捕获字符串或者不存在,则此函数返回 0。
另请参阅capturedStart(),capturedEnd() 和 captured。
qsizetype QRegularExpressionMatch::capturedLength(const QString &name) const
返回名为 name 的捕获组捕获的子字符串的长度。
注意: 如果名为 name 的捕获组没有捕获字符串或者不存在,则此函数返回 0。
另请参阅capturedStart(),capturedEnd() 和 captured。
qsizetype QRegularExpressionMatch::capturedLength(QStringView name) const
返回名为 name 的捕获组捕获的子字符串的长度。
注意: 如果名为 name 的捕获组没有捕获字符串或者不存在,则此函数返回 0。
另请参阅capturedStart(),capturedEnd() 和 captured。
qsizetype QRegularExpressionMatch::capturedStart(int nth = 0) const
返回主题字符串中对应于第 nth 捕获组捕获的子字符串起始位置的偏移量。如果第 nth 捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedEnd(),capturedLength() 和 captured。
qsizetype QRegularExpressionMatch::capturedStart(const QString &name) const
返回主题字符串中对应于名为 name 的捕获组捕获的子字符串起始位置的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedEnd(),capturedLength() 和 captured。
qsizetype QRegularExpressionMatch::capturedStart(QStringView name) const
返回主题字符串中对应于名为 name 的捕获组捕获的子字符串起始位置的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。
另请参阅capturedEnd(),capturedLength() 和 captured。
QStringList QRegularExpressionMatch::capturedTexts() const
返回一个捕获组捕获的所有字符串的列表,按捕获组在模式字符串中出现的顺序排列。该列表包括隐式捕获组号 0,它捕获整个模式匹配的子字符串。
QStringView QRegularExpressionMatch::capturedView(int nth = 0) const
返回第 nth 个捕获组的子字符串视图。
如果第 nth 个捕获组未捕获字符串,或者没有这样的捕获组,则返回一个空的 QStringView。
注意:隐式捕获组编号 0 捕获整个模式的匹配子串。
另请参阅 captured()、lastCapturedIndex()、capturedStart()、capturedEnd()、capturedLength() 和 QStringView::isNull。
QStringView QRegularExpressionMatch::capturedView(QStringView name) const
返回名为 name 的捕获组的字符串视图。
如果名为 name 的捕获组未捕获字符串,或者没有名为 name 的捕获组,则返回一个空的 QStringView。
另请参阅 captured()、capturedStart()、capturedEnd()、capturedLength() 和 QStringView::isNull。
[自 6.3 以来]
bool QRegularExpressionMatch::hasCaptured(int nth) const
如果第 nth 个捕获组在主题字符串中捕获了内容,则返回 true;否则返回 false(或如果没有这样的捕获组)。
注意:隐式捕获组编号 0 捕获整个模式的匹配子串。
注意:正则表达式中的一些捕获组可能没有捕获任何内容,即使正则表达式匹配。例如,如果模式中使用条件操作符,则可能发生这种情况。
QRegularExpression re("([a-z]+)|([A-Z]+)"); QRegularExpressionMatch m = re.match("UPPERCASE"); if (m.hasMatch()) { qDebug() << m.hasCaptured(0); // true qDebug() << m.hasCaptured(1); // false qDebug() << m.hasCaptured(2); // true }
类似地,捕获组可能捕获长度为0的子字符串;此函数将为此捕获组返回true
。
此函数是在Qt 6.3中引入的。
另请参阅 captured()、lastCapturedIndex() 和 hasMatch。
bool QRegularExpressionMatch::hasMatch() const
如果正则表达式与主题字符串匹配,则返回 true
;否则返回 false
。
另请参阅 QRegularExpression::match() 和 hasPartialMatch。
bool QRegularExpressionMatch::hasPartialMatch() const
如果正则表达式部分匹配主题字符串,则返回 true
;否则返回 false
。
注意:只有使用了部分匹配类型的显式匹配才能得到部分匹配。尽管如此,如果完整的匹配成功,该函数将返回 false,而 hasMatch() 将返回 true。
另请参阅 QRegularExpression::match()、QRegularExpression::MatchType 和 hasMatch。
bool QRegularExpressionMatch::isValid() const
如果匹配对象是由对有效 QRegularExpression 对象调用 QRegularExpression::match() 函数获得的,则返回 true
;如果 QRegularExpression 无效,则返回 false
。
另请参阅 QRegularExpression::match() 和 QRegularExpression::isValid。
int QRegularExpressionMatch::lastCapturedIndex() const
返回包含捕获内容的最后一个捕获组的索引,包括隐含的捕获组0。这可以用来提取捕获的所有子串。
QRegularExpressionMatch match = re.match(string); for (int i = 0; i <= match.lastCapturedIndex(); ++i) { QString captured = match.captured(i); // ... }
注意,索引小于lastCapturedIndex()的一些捕获组可能未匹配,因此没有捕获到内容。
如果正则表达式未匹配,则此函数返回-1。
另请参阅hasCaptured(),captured(),capturedStart(),capturedEnd()和capturedLength()。
QRegularExpression::MatchOptions QRegularExpressionMatch::matchOptions() const
返回用于获得此QRegularExpressionMatch对象匹配选项,即传递给QRegularExpression::match()或QRegularExpression::globalMatch()的匹配选项。
另请参阅QRegularExpression::match,regularExpression和matchType。
QRegularExpression::MatchType QRegularExpressionMatch::matchType() const
返回用于获得此QRegularExpressionMatch对象的匹配类型,即传递给QRegularExpression::match或QRegularExpression::globalMatch的匹配类型。
另请参阅QRegularExpression::match,regularExpression和matchOptions。
QRegularExpression QRegularExpressionMatch::regularExpression() const
返回其match()函数返回此对象的QRegularExpression对象。
另请参阅QRegularExpression::match,matchType和matchOptions。
[noexcept]
void QRegularExpressionMatch::swap(QRegularExpressionMatch &other)
交换匹配结果other与当前匹配结果。此操作非常快速且永不失败。
QRegularExpressionMatch &QRegularExpressionMatch::operator=(const QRegularExpressionMatch &match)
将匹配结果match赋给此对象,并返回对复制的引用。
[noexcept]
QRegularExpressionMatch &QRegularExpressionMatch::operator=(QRegularExpressionMatch &&match)
移动赋值匹配结果match到此对象,并返回结果的引用。
请注意,从某个位置移动而来的QRegularExpressionMatch对象只能被销毁或赋值。
相关非成员
QDebug operator<<(QDebug debug, const QRegularExpressionMatch &match)
用于调试目的,将匹配对象 match 写入调试对象 debug。
另请参阅调试技术。
© 2024 Qt公司。本文档中的文档贡献版权属于各自的拥有者。本文档的提供受GNU自由文档许可证第1.3版条款的约束,该许可证由自由软件基金会发布。Qt及其相关标志是Qt公司在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。