Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
java.util.regex
包中的三个公共类是什么?描述每一个的目的。
答案:
Pattern
实例是正则表达式的编译表示。Matcher
实例是解释模式并对输入字符串执行匹配操作的引擎。PatternSyntaxException
定义非检查型异常,指示正则表达式中的语法错误。"foo"
。起始索引是什么?结束索引是什么?解释这些数字的含义。
答案:字符串中的每个字符都驻留在自己的单元格中。索引位置指向单元格之间。字符串 "foo"
从索引 0 开始,到索引 3 结束,即使字符只占用单元格 0,1 和 2。
答案:正则表达式中的普通字符与自身匹配。元字符是一种影响模式匹配方式的特殊字符。字母 A
是普通字符。标点符号 .
是一个匹配任何单个字符的元字符。
答案:有两种方法:
\
);\Q
(在开头)和 \E
(在结尾处)。答案:这是字符类。它匹配括号中表达式指定的字符类中的任何单个字符。
\d
,\s
和 \w
。描述每一个,并使用方括号重写它。
答案:
\d |
匹配任何数字。 | [0-9] |
\s |
匹配任何空白字符。 | [ \t\n-x0B\f\r](译注:这里应该是 [ \t\n\x0B\f\r]) |
\w |
匹配任何单词字符。 | [a-zA-Z_0-9] |
\d
,\s
和 \w
中的每一个,编写 两个 简单表达式与 相反的 字符集匹配。
答案:
\d |
\D |
[^\d] |
\s |
\S |
[^\s] |
\w |
\W |
[^\w] |
(dog){3}
。确定两个子表达式。表达式匹配什么字符串?
答案:表达式由捕获组 (dog)
组成,后跟贪婪量词 {3}
。它匹配字符串“dogdogdog”。
解决方案:([A-Z][a-zA-Z]*)\s\1