- 所有已实现的接口:
MatchResult
Pattern
对 字符序列 执行匹配操作的引擎。
通过调用模式的 matcher
方法从模式创建匹配器。创建后,匹配器可用于执行三种不同类型的匹配操作:
这些方法中的每一个都返回一个指示成功或失败的boolean。可以通过查询匹配器的状态来获取有关成功匹配的更多信息。
匹配器在其输入的一个子集中找到匹配项,称为地区.默认情况下,区域包含匹配器的所有输入。 region可以通过region
方法修改,通过regionStart
和regionEnd
方法查询。可以更改区域边界与某些模式构造交互的方式。有关详细信息,请参阅 useAnchoringBounds
和 useTransparentBounds
。
此类还定义了用新字符串替换匹配子序列的方法,如果需要,可以根据匹配结果计算新字符串的内容。 appendReplacement
和 appendTail
方法可以串联使用,以便将结果收集到现有的字符串缓冲区或字符串生成器中。或者,可以使用更方便的 replaceAll
方法来创建一个字符串,其中输入序列中的每个匹配子序列都被替换。
匹配器的显式状态包括最近成功匹配的开始和结束索引。它还包括模式中每个 捕获组 捕获的输入子序列的开始和结束索引,以及此类子序列的总数。为方便起见,还提供了以字符串形式返回这些捕获的子序列的方法。
匹配器的显式状态最初是未定义的;在成功匹配之前尝试查询它的任何部分将导致抛出 IllegalStateException
。匹配器的显式状态由每个匹配操作重新计算。
匹配器的隐式状态包括输入字符序列以及附加位置,最初为零,由 appendReplacement
方法更新。
可以通过调用其 reset()
方法或者如果需要新的输入序列,则调用其 reset(CharSequence)
方法来显式重置匹配器。重置匹配器会丢弃其显式状态信息并将附加位置设置为零。
多个并发线程使用此类的实例是不安全的。
- 自从:
- 1.4
-
方法总结
修饰符和类型方法描述appendReplacement
(StringBuffer sb, String replacement) 实现非终端附加和替换步骤。appendReplacement
(StringBuilder sb, String replacement) 实现非终端附加和替换步骤。实现终端附加和替换步骤。实现终端附加和替换步骤。int
end()
返回最后一个字符匹配后的偏移量。int
end
(int group) 返回在上一个匹配操作期间给定组捕获的子序列的最后一个字符之后的偏移量。int
返回在上一个匹配操作期间给定 命名捕获组 捕获的子序列的最后一个字符之后的偏移量。boolean
find()
尝试找到与模式匹配的输入序列的下一个子序列。boolean
find
(int start) 重置此匹配器,然后尝试从指定索引开始查找与模式匹配的输入序列的下一个子序列。group()
返回与上一个匹配项匹配的输入子序列。group
(int group) 返回给定组在上一次匹配操作期间捕获的输入子序列。返回给定 命名捕获组 在上一个匹配操作期间捕获的输入子序列。int
返回此匹配器模式中的捕获组数。boolean
查询此匹配器的区域边界的锚定。boolean
hasMatch()
返回this
是否包含来自先前匹配或查找操作的有效匹配。boolean
查询此匹配器的区域边界透明度。boolean
hitEnd()
如果在此匹配器执行的最后一次匹配操作中搜索引擎命中输入的结尾,则返回 true。boolean
尝试将输入序列从区域的开头开始与模式匹配。boolean
matches()
尝试将整个区域与模式匹配。返回一个不可修改的映射,从捕获组名到组号。pattern()
返回此匹配器解释的模式。static String
返回指定String
的文字替换String
。region
(int start, int end) 设置此匹配器区域的限制。int
报告此匹配器区域的结束索引(不包括)。int
报告此匹配器区域的起始索引。replaceAll
(String replacement) 用给定的替换字符串替换输入序列中与模式匹配的每个子序列。replaceAll
(Function<MatchResult, String> replacer) 将输入序列中与模式匹配的每个子序列替换为将给定替换函数应用于与该子序列对应的匹配器的匹配结果的结果。replaceFirst
(String replacement) 用给定的替换字符串替换与模式匹配的输入序列的第一个子序列。replaceFirst
(Function<MatchResult, String> replacer) 将输入序列中与模式匹配的第一个子序列替换为将给定替换函数应用于与该子序列对应的匹配器的匹配结果的结果。boolean
如果更多输入可以将正匹配更改为负匹配,则返回 true。reset()
重置此匹配器。reset
(CharSequence input) 使用新的输入序列重置此匹配器。results()
为匹配模式的输入序列的每个子序列返回匹配结果流。int
start()
返回上一个匹配项的起始索引。int
start
(int group) 返回给定组在上一次匹配操作期间捕获的子序列的起始索引。int
返回给定 命名捕获组 在上一个匹配操作期间捕获的子序列的起始索引。将此匹配器的匹配状态作为MatchResult
返回。toString()
返回此匹配器的字符串表示形式。useAnchoringBounds
(boolean b) 为此匹配器设置区域边界的锚定。usePattern
(Pattern newPattern) 更改此Matcher
用于查找匹配项的Pattern
。useTransparentBounds
(boolean b) 为此匹配器设置区域边界的透明度。
-
方法详情
-
pattern
返回此匹配器解释的模式。- 返回:
- 创建此匹配器的模式
-
toMatchResult
将此匹配器的匹配状态作为MatchResult
返回。结果不受对该匹配器执行的后续操作的影响。- 返回:
-
具有此匹配器状态的
MatchResult
- 自从:
- 1.5
-
usePattern
更改此Matcher
用于查找匹配项的Pattern
。此方法导致此匹配器丢失有关发生的最后一次匹配的组的信息。匹配器在输入中的位置保持不变,其最后一个附加位置不受影响。
- 参数:
newPattern
- 此匹配器使用的新模式- 返回:
- 这个匹配器
- 抛出:
IllegalArgumentException
- 如果 newPattern 是null
- 自从:
- 1.5
-
reset
重置此匹配器。重置匹配器会丢弃其所有显式状态信息并将其附加位置设置为零。匹配器的区域设置为默认区域,即它的整个字符序列。该匹配器区域边界的锚定和透明度不受影响。
- 返回:
- 这个匹配器
-
reset
使用新的输入序列重置此匹配器。重置匹配器会丢弃其所有显式状态信息并将其附加位置设置为零。匹配器的区域设置为默认区域,即它的整个字符序列。该匹配器区域边界的锚定和透明度不受影响。
- 参数:
input
- 新的输入字符序列- 返回:
- 这个匹配器
-
start
public int start()返回上一个匹配项的起始索引。- 指定者:
start
在接口MatchResult
中- 返回:
- 第一个匹配字符的索引
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败
-
start
public int start(int group) 返回给定组在上一次匹配操作期间捕获的子序列的起始索引。捕获组 从左到右索引,从 1 开始。零组表示整个模式,因此表达式米。
start(0)
相当于米。start()
.- 指定者:
start
在接口MatchResult
中- 参数:
group
- 此匹配器模式中捕获组的索引- 返回:
-
组捕获的第一个字符的索引,如果匹配成功但组本身没有匹配任何内容,则返回
-1
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IndexOutOfBoundsException
- 如果在给定索引的模式中没有捕获组
-
start
返回给定 命名捕获组 在上一个匹配操作期间捕获的子序列的起始索引。- 指定者:
start
在接口MatchResult
中- 参数:
name
- 此匹配器模式中命名捕获组的名称- 返回:
-
组捕获的第一个字符的索引,如果匹配成功但组本身没有匹配任何内容,则返回
-1
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组- 自从:
- 1.8
-
end
public int end()返回最后一个字符匹配后的偏移量。- 指定者:
end
在接口MatchResult
中- 返回:
- 最后一个字符匹配后的偏移量
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败
-
end
public int end(int group) 返回在上一个匹配操作期间给定组捕获的子序列的最后一个字符之后的偏移量。捕获组 从左到右索引,从 1 开始。零组表示整个模式,因此表达式米。
end(0)
相当于米。end()
.- 指定者:
end
在接口MatchResult
中- 参数:
group
- 此匹配器模式中捕获组的索引- 返回:
-
组捕获的最后一个字符之后的偏移量,如果匹配成功但组本身没有匹配任何内容,则为
-1
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IndexOutOfBoundsException
- 如果在给定索引的模式中没有捕获组
-
end
返回在上一个匹配操作期间给定 命名捕获组 捕获的子序列的最后一个字符之后的偏移量。- 指定者:
end
在接口MatchResult
中- 参数:
name
- 此匹配器模式中命名捕获组的名称- 返回:
-
组捕获的最后一个字符之后的偏移量,如果匹配成功但组本身没有匹配任何内容,则为
-1
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组- 自从:
- 1.8
-
group
返回与上一个匹配项匹配的输入子序列。对于匹配器m带输入序列s, 表达式米。
group()
和s.substring(
米。start(),
米。end())
是等效的。请注意,某些模式(例如
a*
)与空字符串匹配。当模式成功匹配输入中的空字符串时,此方法将返回空字符串。- 指定者:
group
在接口MatchResult
中- 返回:
- 上一个匹配项匹配的(可能为空的)子序列,以字符串形式
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败
-
group
返回给定组在上一次匹配操作期间捕获的输入子序列。对于匹配器m, 输入序列s, 和组索引g, 表达式米。
group(
g)
和s.substring(
米。start(
g),
米。end(
g))
是等效的。捕获组 从左到右索引,从 1 开始。组零表示整个模式,因此表达式
m.group(0)
等同于m.group()
。如果匹配成功但指定的组未能匹配输入序列的任何部分,则返回
null
。请注意,某些组(例如(a*)
)匹配空字符串。当此类组成功匹配输入中的空字符串时,此方法将返回空字符串。- 指定者:
group
在接口MatchResult
中- 参数:
group
- 此匹配器模式中捕获组的索引- 返回:
-
该组在上一次匹配期间捕获的(可能为空的)子序列,或者如果该组未能匹配部分输入则为
null
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IndexOutOfBoundsException
- 如果在给定索引的模式中没有捕获组
-
group
返回给定 命名捕获组 在上一个匹配操作期间捕获的输入子序列。如果匹配成功但指定的组未能匹配输入序列的任何部分,则返回
null
。请注意,某些组(例如(a*)
)匹配空字符串。当此类组成功匹配输入中的空字符串时,此方法将返回空字符串。- 指定者:
group
在接口MatchResult
中- 参数:
name
- 此匹配器模式中命名捕获组的名称- 返回:
-
命名组在上一次匹配期间捕获的(可能为空)子序列,或者如果该组未能匹配部分输入则为
null
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IllegalArgumentException
- 如果模式中没有具有给定名称的捕获组- 自从:
- 1.7
-
groupCount
public int groupCount()返回此匹配器模式中的捕获组数。组零按照惯例表示整个模式。它不包括在此计数中。
任何小于或等于此方法返回值的非负整数都保证是此匹配器的有效组索引。
- 指定者:
groupCount
在接口MatchResult
中- 返回:
- 此匹配器模式中的捕获组数
-
matches
public boolean matches()尝试将整个区域与模式匹配。如果匹配成功,则可以通过
start
、end
和group
方法获取更多信息。- 返回:
true
当且仅当整个区域序列匹配此匹配器的模式
-
find
public boolean find()尝试找到与模式匹配的输入序列的下一个子序列。此方法从该匹配器区域的开头开始,或者,如果该方法的先前调用成功并且此后匹配器未被重置,则从上一个匹配项未匹配的第一个字符开始。
如果匹配成功,则可以通过
start
、end
和group
方法获取更多信息。- 返回:
true
当且仅当输入序列的子序列匹配此匹配器的模式
-
find
public boolean find(int start) 重置此匹配器,然后尝试从指定索引开始查找与模式匹配的输入序列的下一个子序列。如果匹配成功,则可以通过
start
、end
和group
方法获取更多信息,随后调用find()
方法将从该匹配项未匹配的第一个字符开始。- 参数:
start
- 开始搜索匹配项的索引- 返回:
true
当且仅当从给定索引开始的输入序列的子序列匹配此匹配器的模式- 抛出:
IndexOutOfBoundsException
- 如果开始小于零或者如果开始大于输入序列的长度。
-
lookingAt
public boolean lookingAt()尝试将输入序列从区域的开头开始与模式匹配。与
matches
方法一样,此方法始终从区域的开头开始;与该方法不同,它不需要匹配整个区域。如果匹配成功,则可以通过
start
、end
和group
方法获取更多信息。- 返回:
true
当且仅当输入序列的前缀匹配此匹配器的模式
-
quoteReplacement
返回指定String
的文字替换String
。此方法生成一个String
,它将作为Matcher
类的appendReplacement
方法中的文字替换s
。生成的String
将匹配s
中被视为文字序列的字符序列。斜杠 ('\') 和美元符号 ('$') 没有特殊含义。- 参数:
s
- 要文字化的字符串- 返回:
- 文字字符串替换
- 自从:
- 1.5
-
appendReplacement
实现非终端附加和替换步骤。此方法执行以下操作:
它从输入序列中读取字符,从附加位置开始,并将它们附加到给定的字符串缓冲区。它在读取上一个匹配项之前的最后一个字符(即索引
start()
-
1
处的字符)后停止。它将给定的替换字符串附加到字符串缓冲区。
它将此匹配器的附加位置设置为最后一个匹配字符的索引加一,即到
end()
。
替换字符串可能包含对上一次匹配期间捕获的子序列的引用:每次出现
${
name}
或$
g将被分别评估相应的group(name)
或group(g)
的结果所取代。对于$
g,$
之后的第一个数字始终被视为组引用的一部分。如果后续数字将形成合法的组引用,则将它们合并到 g 中。只有数字“0”到“9”被认为是组引用的潜在组成部分。例如,如果第二组与字符串"foo"
匹配,则传递替换字符串"$2bar"
将导致"foobar"
附加到字符串缓冲区。美元符号 ($
) 可以作为文字包含在替换字符串中,方法是在它前面加上反斜杠 (\$
)。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。此方法旨在与
appendTail
和find
方法一起在循环中使用。例如,以下代码将one dog two dogs in the yard
写入标准输出流:Pattern p = Pattern.compile("cat"); Matcher m = p.matcher("one cat two cats in the yard"); StringBuffer sb = new StringBuffer(); while (m.find()) { m.appendReplacement(sb, "dog"); } m.appendTail(sb); System.out.println(sb.toString());
- 参数:
sb
- 目标字符串缓冲区replacement
- 替换字符串- 返回:
- 这个匹配器
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IllegalArgumentException
- 如果替换字符串引用模式中不存在的命名捕获组IndexOutOfBoundsException
- 如果替换字符串引用模式中不存在的捕获组
-
appendReplacement
实现非终端附加和替换步骤。此方法执行以下操作:
它从输入序列中读取字符,从附加位置开始,并将它们附加到给定的字符串构建器。它在读取上一个匹配项之前的最后一个字符(即索引
start()
-
1
处的字符)后停止。它将给定的替换字符串附加到字符串生成器。
它将此匹配器的附加位置设置为最后一个匹配字符的索引加一,即到
end()
。
替换字符串可能包含对上一次匹配期间捕获的子序列的引用:每次出现
$
g将被评估group
(
的结果所取代g)
。$
之后的第一个数字始终被视为组引用的一部分。如果后续数字将形成合法的组引用,则将它们合并到 g 中。只有数字“0”到“9”被认为是组引用的潜在组成部分。例如,如果第二组与字符串"foo"
匹配,则传递替换字符串"$2bar"
将导致"foobar"
附加到字符串生成器。美元符号 ($
) 可以作为文字包含在替换字符串中,方法是在它前面加上反斜杠 (\$
)。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。此方法旨在与
appendTail
和find
方法一起在循环中使用。例如,以下代码将one dog two dogs in the yard
写入标准输出流:Pattern p = Pattern.compile("cat"); Matcher m = p.matcher("one cat two cats in the yard"); StringBuilder sb = new StringBuilder(); while (m.find()) { m.appendReplacement(sb, "dog"); } m.appendTail(sb); System.out.println(sb.toString());
- 参数:
sb
- 目标字符串生成器replacement
- 替换字符串- 返回:
- 这个匹配器
- 抛出:
IllegalStateException
- 如果尚未尝试匹配,或者之前的匹配操作失败IllegalArgumentException
- 如果替换字符串引用模式中不存在的命名捕获组IndexOutOfBoundsException
- 如果替换字符串引用模式中不存在的捕获组- 自从:
- 9
-
appendTail
实现终端附加和替换步骤。此方法从输入序列中读取字符,从追加位置开始,并将它们追加到给定的字符串缓冲区。它旨在在
appendReplacement
方法的一次或多次调用之后被调用,以便复制输入序列的其余部分。- 参数:
sb
- 目标字符串缓冲区- 返回:
- 目标字符串缓冲区
-
appendTail
实现终端附加和替换步骤。此方法从输入序列中读取字符,从附加位置开始,并将它们附加到给定的字符串构建器。它旨在在
appendReplacement
方法的一次或多次调用之后被调用,以便复制输入序列的其余部分。- 参数:
sb
- 目标字符串生成器- 返回:
- 目标字符串生成器
- 自从:
- 9
-
replaceAll
用给定的替换字符串替换输入序列中与模式匹配的每个子序列。此方法首先重置此匹配器。然后它扫描输入序列以寻找模式的匹配项。不属于任何匹配的字符将直接附加到结果字符串;结果中的每个匹配项都被替换字符串替换。替换字符串可能包含对捕获的子序列的引用,如
appendReplacement
方法中所示。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。给定正则表达式
a*b
、输入"aabfooaabfooabfoob"
和替换字符串"-"
,在该表达式的匹配器上调用此方法将生成字符串"-foo-foo-foo-"
。调用此方法会更改此匹配器的状态。如果匹配器要用于进一步的匹配操作,那么它应该首先被重置。
- 参数:
replacement
- 替换字符串- 返回:
- 通过用替换字符串替换每个匹配子序列构造的字符串,根据需要替换捕获的子序列
-
replaceAll
将输入序列中与模式匹配的每个子序列替换为将给定替换函数应用于与该子序列对应的匹配器的匹配结果的结果。函数抛出的异常被转发给调用者。此方法首先重置此匹配器。然后它扫描输入序列以寻找模式的匹配项。不属于任何匹配的字符将直接附加到结果字符串;通过应用返回替换字符串的替换函数,在结果中替换每个匹配项。每个替换字符串都可能包含对捕获的子序列的引用,如
appendReplacement
方法中所示。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。给定正则表达式
dog
、输入"zzzdogzzzdogzzz"
和函数mr -> mr.group().toUpperCase()
,在该表达式的匹配器上调用此方法将产生字符串"zzzDOGzzzDOGzzz"
。调用此方法会更改此匹配器的状态。如果匹配器要用于进一步的匹配操作,那么它应该首先被重置。
替换函数不应在替换期间修改此匹配器的状态。如果检测到此类修改,此方法将尽最大努力抛出
ConcurrentModificationException
。传递给替换函数的每个匹配结果的状态保证仅在替换函数调用期间保持不变,并且仅当替换函数不修改此匹配器的状态时。
- 实现注意事项:
-
此实现将替换函数应用于此匹配器,它是
MatchResult
的一个实例。 - 参数:
replacer
- 应用于此匹配器的匹配结果的函数,返回替换字符串。- 返回:
- 通过将替换函数应用于该匹配子序列的结果替换每个匹配子序列构建的字符串,根据需要替换捕获的子序列。
- 抛出:
NullPointerException
- 如果替换函数为空ConcurrentModificationException
- 如果检测到,在最大努力的基础上,替换函数修改了这个匹配器的状态- 自从:
- 9
-
results
为匹配模式的输入序列的每个子序列返回匹配结果流。匹配结果的出现顺序与输入序列中的匹配子序列相同。每个匹配结果都由
toMatchResult()
生成。此方法不会重置此匹配器。匹配开始于终端流操作的启动,或者在这个匹配器区域的开始,或者,如果匹配器还没有被重置,那么在第一个与前一个匹配不匹配的字符处开始。
如果匹配器要在终端流操作完成后用于进一步的匹配操作,则应首先将其重置。
在执行返回流的管道期间不应修改此匹配器的状态。返回流的源
Spliterator
是 fail-fast,如果检测到此类修改,将尽最大努力抛出ConcurrentModificationException
。- 返回:
- 匹配结果的顺序流。
- 自从:
- 9
-
replaceFirst
用给定的替换字符串替换与模式匹配的输入序列的第一个子序列。此方法首先重置此匹配器。然后它扫描输入序列以寻找模式的匹配项。不属于匹配项的字符将直接附加到结果字符串;结果中的匹配被替换字符串替换。替换字符串可能包含对捕获的子序列的引用,如
appendReplacement
方法中所示。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。给定正则表达式
dog
、输入"zzzdogzzzdogzzz"
和替换字符串"cat"
,在该表达式的匹配器上调用此方法将生成字符串"zzzcatzzzdogzzz"
。调用此方法会更改此匹配器的状态。如果匹配器要用于进一步的匹配操作,那么它应该首先被重置。
- 参数:
replacement
- 替换字符串- 返回:
- 通过将第一个匹配的子序列替换为替换字符串构造的字符串,根据需要替换捕获的子序列
-
replaceFirst
将输入序列中与模式匹配的第一个子序列替换为将给定替换函数应用于与该子序列对应的匹配器的匹配结果的结果。替换函数抛出的异常被转发给调用者。此方法首先重置此匹配器。然后它扫描输入序列以寻找模式的匹配项。不属于匹配项的字符将直接附加到结果字符串;通过应用返回替换字符串的替换函数来替换结果中的匹配项。替换字符串可能包含对捕获的子序列的引用,如
appendReplacement
方法中所示。请注意,替换字符串中的反斜杠 (
\
) 和美元符号 ($
) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对捕获的子序列的引用,如上所述,反斜杠用于转义替换字符串中的文字字符。给定正则表达式
dog
、输入"zzzdogzzzdogzzz"
和函数mr -> mr.group().toUpperCase()
,在该表达式的匹配器上调用此方法将生成字符串"zzzDOGzzzdogzzz"
。调用此方法会更改此匹配器的状态。如果匹配器要用于进一步的匹配操作,那么它应该首先被重置。
替换函数不应在替换期间修改此匹配器的状态。如果检测到此类修改,此方法将尽最大努力抛出
ConcurrentModificationException
。传递给替换函数的匹配结果的状态保证仅在替换函数调用期间保持不变,并且仅当替换函数不修改此匹配器的状态时。
- 实现注意事项:
-
此实现将替换函数应用于此匹配器,它是
MatchResult
的一个实例。 - 参数:
replacer
- 应用于此匹配器的匹配结果的函数,返回替换字符串。- 返回:
- 通过将第一个匹配子序列替换为将替换函数应用于匹配子序列的结果来构建的字符串,并根据需要替换捕获的子序列。
- 抛出:
NullPointerException
- 如果替换函数为空ConcurrentModificationException
- 如果检测到,在最大努力的基础上,替换函数修改了这个匹配器的状态- 自从:
- 9
-
region
设置此匹配器区域的限制。该区域是将被搜索以找到匹配项的输入序列的一部分。调用此方法会重置匹配器,然后将区域设置为从start
参数指定的索引开始,并在end
参数指定的索引处结束。根据所使用的透明度和锚定(参见
useTransparentBounds
和useAnchoringBounds
),某些结构(例如锚点)在区域边界处或周围可能表现不同。- 参数:
start
- 开始搜索的索引(含)end
- 结束搜索的索引(独占)- 返回:
- 这个匹配器
- 抛出:
IndexOutOfBoundsException
- 如果开始或结束小于零,如果开始大于输入序列的长度,如果结束大于输入序列的长度,或者如果开始大于结束。- 自从:
- 1.5
-
regionStart
public int regionStart()报告此匹配器区域的起始索引。此匹配器进行的搜索仅限于在regionStart
(含)和regionEnd
(不含)内查找匹配项。- 返回:
- 这个匹配器区域的起点
- 自从:
- 1.5
-
regionEnd
public int regionEnd()报告此匹配器区域的结束索引(不包括)。此匹配器进行的搜索仅限于在regionStart
(含)和regionEnd
(不含)内查找匹配项。- 返回:
- 这个匹配器区域的终点
- 自从:
- 1.5
-
hasTransparentBounds
public boolean hasTransparentBounds()查询此匹配器的区域边界透明度。如果此匹配器使用,则此方法返回
true
透明的边界,false
如果它使用不透明界限。有关透明和不透明边界的说明,请参见
useTransparentBounds
。默认情况下,匹配器使用不透明区域边界。
- 返回:
true
当且仅当此匹配器使用透明边界,false
否则。- 自从:
- 1.5
- 参见:
-
useTransparentBounds
为此匹配器设置区域边界的透明度。使用参数
true
调用此方法将设置此匹配器以使用透明的界限。如果布尔参数是false
,那么不透明将使用边界。使用透明边界,此匹配器区域的边界对于前瞻、后视和边界匹配构造是透明的。这些构造可以超越区域边界查看匹配是否合适。
使用不透明边界,此匹配器区域的边界对于前瞻、后视和可能试图超越它们的边界匹配构造是不透明的。这些结构无法超越边界,因此它们将无法匹配区域外的任何东西。
默认情况下,匹配器使用不透明边界。
- 参数:
b
- 一个boolean,指示是使用不透明区域还是透明区域- 返回:
- 这个匹配器
- 自从:
- 1.5
- 参见:
-
hasAnchoringBounds
public boolean hasAnchoringBounds()查询此匹配器的区域边界的锚定。如果此匹配器使用,则此方法返回
true
锚定边界,false
否则。有关锚定边界的说明,请参见
useAnchoringBounds
。默认情况下,匹配器使用锚定区域边界。
- 返回:
true
当且仅当此匹配器正在使用锚定边界,false
否则。- 自从:
- 1.5
- 参见:
-
useAnchoringBounds
为此匹配器设置区域边界的锚定。使用参数
true
调用此方法将设置此匹配器以使用锚定界限。如果布尔参数是false
,那么非锚定将使用边界。使用锚定边界,此匹配器区域的边界匹配 ^ 和 $ 等锚点。
如果没有锚定边界,这个匹配器区域的边界将不会匹配 ^ 和 $ 等锚点。
默认情况下,匹配器使用锚定区域边界。
- 参数:
b
- 一个boolean,指示是否使用锚定边界。- 返回:
- 这个匹配器
- 自从:
- 1.5
- 参见:
-
toString
返回此匹配器的字符串表示形式。
Matcher
的字符串表示包含可能对调试有用的信息。确切的格式未指定。 -
hitEnd
public boolean hitEnd()如果在此匹配器执行的最后一次匹配操作中搜索引擎命中输入的结尾,则返回 true。
当此方法返回 true 时,可能更多的输入会改变上次搜索的结果。
- 返回:
- 如果在最后一场比赛中输入的结尾被击中则为真;否则为假
- 自从:
- 1.5
-
requireEnd
public boolean requireEnd()如果更多输入可以将正匹配更改为负匹配,则返回 true。
如果此方法返回 true,并且找到匹配项,则更多输入可能会导致匹配项丢失。如果此方法返回 false 并找到匹配项,则更多输入可能会更改匹配项,但匹配项不会丢失。如果未找到匹配项,则 requireEnd 没有意义。
- 返回:
- 如果更多输入可以将正匹配更改为负匹配,则为真。
- 自从:
- 1.5
-
namedGroups
返回一个不可修改的映射,从捕获组名到组号。如果没有命名组,则返回一个空映射。- 指定者:
namedGroups
在接口MatchResult
中- 返回:
- 从捕获组名到组号的不可修改的映射
- 自从:
- 20
-
hasMatch
public boolean hasMatch()返回this
是否包含来自先前匹配或查找操作的有效匹配。- 指定者:
hasMatch
在接口MatchResult
中- 返回:
this
是否包含有效匹配- 自从:
- 20
-