- 所有已知的实现类:
-
Matcher
public interface MatchResult
匹配操作的结果。
此接口包含用于确定与正则表达式匹配结果的查询方法。可以查看但不能通过 MatchResult
修改匹配边界、组和组边界。
- 实现注意事项:
-
默认方法
start(String)
、end(String)
和group(String)
实现了命名组的支持。它们都利用了由namedGroups()
返回的映射,其默认实现只是抛出UnsupportedOperationException
。因此,只需重写namedGroups()
即可使这些方法工作。但是,出于性能或其他原因,直接重写它们可能更可取。 - 自从:
- 1.5
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionint
end()
返回匹配的最后一个字符之后的偏移量。int
end
(int group) 返回在此匹配期间由给定组捕获的子序列的最后一个字符之后的偏移量。default int
返回在上一次匹配操作期间由给定 命名捕获组 捕获的子序列的最后一个字符之后的偏移量。group()
返回上一次匹配操作匹配的输入子序列。group
(int group) 返回上一次匹配操作期间由给定组捕获的输入子序列。default String
返回在上一次匹配操作期间由给定 命名捕获组 捕获的输入子序列。int
返回此匹配结果模式中捕获组的数量。default boolean
hasMatch()
返回this
是否包含来自先前匹配或查找操作的有效匹配。返回从捕获组名称到组编号的不可修改映射。int
start()
返回匹配的起始索引。int
start
(int group) 返回在此匹配期间由给定组捕获的子序列的起始索引。default int
返回在上一次匹配操作期间由给定 命名捕获组 捕获的子序列的起始索引。
-
Method Details
-
start
int start()返回匹配的起始索引。- 返回:
- 第一个字符的索引匹配
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败
-
start
int start(int group) 返回在此匹配期间由给定组捕获的子序列的起始索引。捕获组 从左到右索引,从一开始。组零表示整个模式,因此表达式 m.
start(0)
等同于 m.start()
。- 参数:
-
group
- 此匹配器模式中捕获组的索引 - 返回:
-
由该组捕获的第一个字符的索引,如果匹配成功但组本身未匹配任何内容,则返回
-1
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败 -
IndexOutOfBoundsException
- 如果模式中没有具有给定索引的捕获组
-
start
返回在上一次匹配操作期间由给定 命名捕获组 捕获的子序列的起始索引。- 实现要求:
-
此方法的默认实现调用
namedGroups()
以从name
参数获取组编号,并将其用作对start(int)
的调用的参数。 - 参数:
-
name
- 此匹配器模式中命名捕获组的名称 - 返回:
-
由该组捕获的第一个字符的索引,如果匹配成功但组本身未匹配任何内容,则返回
-1
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败 -
IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组 - 自从:
- 20
-
end
int end()返回匹配的最后一个字符之后的偏移量。- 返回:
- 匹配的最后一个字符之后的偏移量
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败
-
end
int end(int group) 返回在此匹配期间由给定组捕获的子序列的最后一个字符之后的偏移量。捕获组 从左到右索引,从一开始。组零表示整个模式,因此表达式 m.
end(0)
等同于 m.end()
。- 参数:
-
group
- 此匹配器模式中捕获组的索引 - 返回:
-
由该组捕获的最后一个字符之后的偏移量,如果匹配成功但组本身未匹配任何内容,则返回
-1
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败 -
IndexOutOfBoundsException
- 如果模式中没有具有给定索引的捕获组
-
end
返回在上一次匹配操作期间由给定 命名捕获组 捕获的子序列的最后一个字符之后的偏移量。- 实现要求:
-
此方法的默认实现调用
namedGroups()
以从name
参数获取组编号,并将其用作对end(int)
的调用的参数。 - 参数:
-
name
- 此匹配器模式中命名捕获组的名称 - 返回:
-
由该组捕获的最后一个字符之后的偏移量,如果匹配成功但组本身未匹配任何内容,则返回
-1
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败 -
IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组 - 自从:
- 20
-
group
String group()返回上一次匹配操作匹配的输入子序列。对于匹配器 m 和输入序列 s,表达式 m.
group()
和 s.substring(
m.start(),
m.end())
是等效的。请注意,某些模式,例如
a*
,匹配空字符串。当模式成功匹配输入中的空字符串时,此方法将返回空字符串。- 返回:
- 上一次匹配中匹配的(可能为空)子序列,以字符串形式
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败
-
group
返回上一次匹配操作期间由给定组捕获的输入子序列。对于匹配器 m、输入序列 s 和组索引 g,表达式 m.
group(
g)
和 s.substring(
m.start(
g),
m.end(
g))
是等效的。捕获组 从左到右索引,从一开始。组零表示整个模式,因此表达式
m.group(0)
等同于m.group()
。如果匹配成功但指定的组未能匹配输入序列的任何部分,则返回
null
。请注意,某些组,例如(a*)
,匹配空字符串。当这样的组成功匹配输入中的空字符串时,此方法将返回空字符串。- 参数:
-
group
- 此匹配器模式中捕获组的索引 - 返回:
-
上一次匹配期间由该组捕获的(可能为空)子序列,如果该组未能匹配输入的部分,则返回
null
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者上一个匹配操作失败 -
IndexOutOfBoundsException
- 如果模式中没有具有给定索引的捕获组
-
group
返回在先前匹配操作期间由给定的命名捕获组捕获的输入子序列。如果匹配成功但指定的组未能匹配输入序列的任何部分,则返回
null
。请注意,有些组,例如(a*)
,匹配空字符串。当这样的组成功匹配输入中的空字符串时,此方法将返回空字符串。- 实现要求:
-
此方法的默认实现调用
namedGroups()
以从name
参数中获取组号,并将其用作对group(int)
的调用的参数。 - 参数:
-
name
- 此匹配器模式中命名捕获组的名称 - 返回:
-
在先前匹配期间由命名组捕获的(可能为空的)子序列,如果组未能匹配输入的部分,则返回
null
- 抛出:
-
IllegalStateException
- 如果尚未尝试匹配,或者先前的匹配操作失败 -
IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组 - 自:
- 20
-
groupCount
int groupCount()返回此匹配结果模式中捕获组的数量。按照惯例,组零表示整个模式。它不包括在此计数中。
此方法返回的值小于或等于此方法返回的值的任何非负整数都保证是此匹配器的有效组索引。
- 返回:
- 此匹配器模式中捕获组的数量
-
namedGroups
返回从捕获组名称到组号的不可修改映射。如果没有命名组,则返回空映射。- API 注意:
- 必须通过支持命名组的实现来重写此方法。
- 实现要求:
-
此方法的默认实现始终抛出
UnsupportedOperationException
- 返回:
- 从捕获组名称到组号的不可修改映射
- 抛出:
-
UnsupportedOperationException
- 如果实现不支持命名组 - 自:
- 20
-
hasMatch
default boolean hasMatch()返回this
是否包含先前匹配或查找操作的有效匹配。- 实现要求:
-
此方法的默认实现始终抛出
UnsupportedOperationException
- 返回:
-
this
是否包含有效匹配 - 抛出:
-
UnsupportedOperationException
- 如果实现无法报告是否存在匹配 - 自:
- 20
-