这些Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及后续版本中更新的语言功能的概述。
请参阅JDK发行说明,了解所有JDK版本的新功能、增强功能以及已删除或不推荐使用的选项的信息。
这个API支持的最基本的模式匹配形式是字符串文字的匹配。例如,如果正则表达式是foo
,输入字符串是foo
,匹配将成功,因为字符串是相同的。使用测试工具尝试一下:
输入您的正则表达式:foo 输入要搜索的字符串:foo 我找到了文本foo,起始索引为0,结束索引为3。
这个匹配是成功的。注意,虽然输入字符串的长度为3个字符,但起始索引为0,结束索引为3。按照惯例,范围包括起始索引,不包括结束索引,如下图所示:
字符串文字foo,带有编号的单元格和索引值。
字符串中的每个字符都位于自己的单元格中,索引位置指向每个单元格之间。字符串"foo"从索引0开始,到索引3结束,即使字符本身只占据单元格0、1和2。
在后续的匹配中,您会注意到一些重叠;下一个匹配的起始索引与上一个匹配的结束索引相同:
输入您的正则表达式:foo 输入要搜索的字符串:foofoofoo 我找到了文本foo,起始索引为0,结束索引为3。 我找到了文本foo,起始索引为3,结束索引为6。 我找到了文本foo,起始索引为6,结束索引为9。
这个API还支持一些特殊字符,它们影响模式的匹配方式。将正则表达式更改为cat.
,将输入字符串更改为cats
。输出将如下所示:
输入您的正则表达式:cat. 输入要搜索的字符串:cats 我找到了文本cats,起始索引为0,结束索引为4。
尽管输入字符串中没有出现点号".
",但匹配仍然成功。这是因为点号是一个元字符,即由匹配器解释的具有特殊意义的字符。元字符".
"表示"任何字符",这就是为什么在这个例子中匹配成功的原因。
这个API支持的元字符有:<([{\^-=$!|]})?*+.>
@
和#
从不具有特殊含义。
\Q
(开始引用)和\E
(结束引用)之间。使用这种技术时,\Q
和\E
可以放置在表达式的任何位置,只要\Q
在前面。