文档

Java™ 教程-Java Tutorials 中文版
字符串字面量
Trail: Essential Classes
Lesson: Regular Expressions

字符串字面量

此 API 支持的最基本的模式匹配形式是字符串字面量的匹配。例如,如果正则表达式为 foo 且输入字符串为 foo,则匹配将成功,因为字符串相同。尝试使用测试工具:

 
Enter your regex: foo
Enter input string to search: foo
I found the text foo starting at index 0 and ending at index 3.

该匹配成功。请注意,虽然输入字符串长度为 3 个字符,但起始索引为 0,结束索引为 3。按照规范,范围包括起始索引且排除结束索引,如下图所示:

字符串文字 foo,带有编号单元格和索引值。

字符串文字 foo,带有编号单元格和索引值。

字符串中的每个字符都驻留在自己的 cell (单元格) 中,索引位置指向每个单元格。字符串“foo”从索引 0 开始,到索引 3 结束,即使字符本身只占用单元格 0,1 和 2。

随后的匹配,你会发现一些重叠;下一个匹配的起始索引与上一个匹配的结束索引相同:

 
Enter your regex: foo
Enter input string to search: foofoofoo
I found the text foo starting at index 0 and ending at index 3.
I found the text foo starting at index 3 and ending at index 6.
I found the text foo starting at index 6 and ending at index 9.

元字符

此 API 还支持许多影响模式匹配方式的特殊字符。将正则表达式更改为 cat.,将输入字符串更改为 cats。输出显示如下:

Enter your regex: cat.
Enter input string to search: cats
I found the text cats starting at index 0 and ending at index 4.

即使输入字符串中不存在点“.”,匹配仍会成功。它成功是因为点是 metacharacter (元字符) — 由匹配器解释的具有特殊含义的字符。元字符“.”表示“任何字符”,这就是本例中匹配成功的原因。

此API支持的元字符为:<([{\^-=$!|]})?*+.>


注意: 在某些情况下,上面列出的特殊字符将 被视为元字符。当你了解有关如何构造正则表达式的更多信息时,你将遇到此问题。但是,你可以使用此列表检查特定字符是否会被视为元字符。例如,字符 @# 从不具有特殊含义。

有两种方法可以强制将元字符视为普通字符:

使用此技术时,\Q\E 可放置在表达式中的任何位置,前提是 \Q 首先出现。


Previous page: Test Harness
Next page: Character Classes