PySide6.QtCore.QRegularExpressionMatch

class QRegularExpressionMatch

QRegularExpressionMatch 类提供了将 QRegularExpression 与字符串匹配的结果。更多

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

可以通过调用match()函数获得一个QRegularExpressionMatch对象,或者作为QRegularExpressionMatchIterator的全局匹配的单一结果。

匹配尝试的成功或失败可以通过调用hasMatch()函数来检查。QRegularExpressionMatch还通过hasPartialMatch()函数报告成功的部分匹配。

此外,QRegularExpressionMatch 返回由模式字符串中的捕获组捕获的子字符串。索引为0的隐式捕获组捕获整个匹配的结果。captured() 函数返回每个捕获的子字符串,可以通过捕获组的索引或其名称来获取:

re = QRegularExpression("(\\d\\d) (?\\w+)")
match = re.match("23 Jordan")
if match.hasMatch():
    number = match.captured(1) # first == "23"
    name = match.captured("name") # name == "Jordan"

对于每个捕获的子字符串,可以通过分别调用capturedStart()capturedEnd()函数来查询其在目标字符串中的起始和结束偏移量。每个捕获的子字符串的长度可以使用capturedLength()函数获得。

便利函数 capturedTexts() 将一次性返回所有捕获的子字符串(包括整个模式匹配的子字符串),按照捕获组捕获的顺序;也就是说,captured(i) == capturedTexts().at(i)

你可以通过调用regularExpression()函数来检索主题字符串所匹配的QRegularExpression对象;匹配类型和匹配选项也可以通过分别调用matchType()matchOptions()来获取。

请参阅QRegularExpression文档以获取有关Qt正则表达式类的更多信息。

另请参阅

QRegularExpression

__init__()

构造一个有效的、空的QRegularExpressionMatch对象。正则表达式设置为默认构造的;匹配类型设置为NoMatch,匹配选项设置为NoMatchOption

该对象将通过hasMatch()hasPartialMatch()成员函数报告没有匹配。

__init__(match)
Parameters:

匹配QRegularExpressionMatch

通过复制给定的match的结果来构建匹配结果。

另请参阅

operator=()

captured(name)
Parameters:

name – str

Return type:

字符串

返回由名为 name 的捕获组捕获的子字符串。

如果命名的捕获组 name 没有捕获到字符串,或者如果没有名为 name 的捕获组,则返回一个空的 QString

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

captured([nth=0])
Parameters:

nth – 整数

Return type:

字符串

返回由第nth个捕获组捕获的子字符串。

如果第nth个捕获组没有捕获到字符串,或者没有这样的捕获组,则返回一个空的QString

注意

隐式捕获组编号0捕获由整个模式匹配的子字符串。

capturedEnd(name)
Parameters:

name – str

Return type:

整数

返回在由名为name的捕获组捕获的子字符串结束位置之后,主题字符串内的偏移量。如果名为name的捕获组没有捕获字符串或不存在,则返回-1。

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

capturedEnd([nth=0])
Parameters:

nth – 整数

Return type:

整数

返回主题字符串中紧接在第nth捕获组捕获的子字符串结束位置之后的偏移量。如果第nth捕获组未捕获字符串或不存在,则返回-1。

capturedLength(name)
Parameters:

name – str

Return type:

整数

返回由名为name的捕获组捕获的子字符串的长度。

注意

如果名为name的捕获组没有捕获字符串或不存在,此函数返回0。

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

capturedLength([nth=0])
Parameters:

nth – 整数

Return type:

整数

返回由第nth捕获组捕获的子字符串的长度。

注意

如果nth捕获组没有捕获字符串或不存在,此函数返回0。

capturedStart(name)
Parameters:

name – str

Return type:

整数

返回与名为name的捕获组捕获的子字符串的起始位置相对应的主题字符串内的偏移量。如果名为name的捕获组未捕获字符串或不存在,则返回-1。

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

capturedStart([nth=0])
Parameters:

nth – 整数

Return type:

整数

返回与第nth捕获组捕获的子字符串的起始位置相对应的主题字符串内的偏移量。如果第nth捕获组未捕获字符串或不存在,则返回-1。

capturedTexts()
Return type:

字符串列表

返回由捕获组捕获的所有字符串的列表,顺序与组本身在模式字符串中出现的顺序相同。该列表包括隐式捕获组编号0,捕获整个模式匹配的子字符串。

capturedView(name)
Parameters:

name – str

Return type:

字符串

返回由名为 name 的捕获组捕获的字符串的视图。

如果命名的捕获组 name 没有捕获字符串,或者如果没有名为 name 的捕获组,则返回一个空的 QStringView

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

capturedView([nth=0])
Parameters:

nth – 整数

Return type:

字符串

返回由第nth捕获组捕获的子字符串的视图。

如果第nth个捕获组没有捕获到字符串,或者没有这样的捕获组,则返回一个空的QStringView

注意

隐式捕获组编号0捕获由整个模式匹配的子字符串。

hasCaptured(name)
Parameters:

name – str

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果名为name的捕获组在主题字符串中捕获了某些内容,则返回true,否则返回false(或者如果没有名为name的捕获组)。

注意

在正则表达式中,某些捕获组可能没有捕获任何内容,即使正则表达式匹配成功。例如,如果在模式中使用了条件运算符,可能会发生这种情况:

re = QRegularExpression("([a-z]+)|([A-Z]+)")
m = re.match("UPPERCASE")
if m.hasMatch():
    print(m.hasCaptured(0)) # true
    print(m.hasCaptured(1)) # false
    print(m.hasCaptured(2)) # true

同样地,捕获组可能捕获长度为0的子字符串;对于这样的捕获组,此函数将返回true

注意

在Qt 6.8之前的版本中,此函数接受QStringQStringView,而不是QAnyStringView

另请参阅

captured() hasMatch()

hasCaptured(nth)
Parameters:

nth – 整数

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果nth捕获组在主题字符串中捕获了某些内容,则返回true,否则返回false(或者如果没有这样的捕获组)。

注意

隐式捕获组编号0捕获由整个模式匹配的子字符串。

注意

在正则表达式中,某些捕获组可能没有捕获任何内容,即使正则表达式匹配成功。例如,如果在模式中使用了条件运算符,就可能发生这种情况:

re = QRegularExpression("([a-z]+)|([A-Z]+)")
m = re.match("UPPERCASE")
if m.hasMatch():
    print(m.hasCaptured(0)) # true
    print(m.hasCaptured(1)) # false
    print(m.hasCaptured(2)) # true

同样地,捕获组可能捕获长度为0的子字符串;对于这样的捕获组,此函数将返回true

hasMatch()
Return type:

布尔

如果正则表达式与主题字符串匹配,则返回 true,否则返回 false。

另请参阅

match() hasPartialMatch()

hasPartialMatch()
Return type:

布尔

如果正则表达式部分匹配了目标字符串,则返回true,否则返回false。

注意

只有明确使用了部分匹配类型之一的匹配才能产生部分匹配。尽管如此,如果这样的匹配完全成功,此函数将返回false,而hasMatch()将返回true。

isValid()
Return type:

布尔

如果匹配对象是通过在有效的QRegularExpression对象上调用的match()函数获得的,则返回true;如果QRegularExpression无效,则返回false

另请参阅

match() isValid()

lastCapturedIndex()
Return type:

整数

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回最后一个捕获了内容的捕获组的索引,包括隐式捕获组0。这可以用于提取所有被捕获的子字符串:

match = re.match(string)
for i in range(0, match.lastCapturedIndex() + 1):
    captured = match.captured(i)
    # ...

请注意,一些索引小于lastCapturedIndex()的捕获组可能没有匹配,因此没有捕获任何内容。

如果正则表达式没有匹配,此函数返回-1。

matchOptions()
Return type:

MatchOption的组合

返回用于获取此QRegularExpressionMatch对象的匹配选项,即传递给match()globalMatch()的匹配选项。

matchType()
Return type:

MatchType

返回用于获取此QRegularExpressionMatch对象的匹配类型,即传递给match()globalMatch()的匹配类型。

regularExpression()
Return type:

QRegularExpression

返回其match()函数返回此对象的QRegularExpression对象。

swap(other)
Parameters:

其他QRegularExpressionMatch

将此匹配结果与other匹配结果交换。此操作非常快速且永远不会失败。