问题
1.问题:java.util.regex
包中的三个公共类是什么?描述每个类的目的。
答:
Pattern
实例是正则表达式的编译表示。Matcher
实例是解释模式并针对输入字符串执行匹配操作的引擎。PatternSyntaxException
定义一个未检查异常,该异常指示正则表达式中的语法错误。
2.问题:考虑字符串文字"foo"
。什么是起始索引?结束索引是多少?解释这些数字的含义。
答:字符串中的每个字符都位于其自己的单元格中。索引位置指向单元格之间。字符串“ foo”从索引0开始,到索引3结束,即使这些字符仅占用单元格0、1和2。
3.问题:普通字符和元字符之间有什么区别?举一个例子。
答:正则表达式中的普通字符会自己匹配。元字符是一个特殊字符,它会影响模式匹配的方式。字母A
是普通字符。标点符号.
是与任何单个字符匹配的元字符。
4.问题:如何迫使元字符表现得像普通字符?
答:有两种方法:
- 用反斜杠(
\
)开头的元字符; - 将元字符括在引号表达式(以
\Q
开头和\E
结尾)中。
5.问题:您怎么称呼括在方括号中的一组字符?这是为了什么?
答:这是一个字符类。它与括号之间的表达式指定的字符类别中的任何单个字符匹配。
6.问:这里有三个预定义字符类:\d
,\s
,和\w
。描述每一个,并使用方括号将其重写。
答:
\d |
匹配任何数字。 | [0-9] |
---|---|---|
\s |
匹配任何空白字符。 | [ \t\n-x0B\f\r] |
\w |
匹配任何单词字符。 | [a-zA-Z_0-9] |
7.问题:对于每一个\d
,\s
以及\w
,编写两个与相反字符集匹配的简单表达式。
答:
\d |
\D |
[^\d] |
---|---|---|
\s |
\S |
[^\s] |
\w |
\W |
[^\w] |
8.问题:考虑正则表达式(dog){3}
。标识两个子表达式。表达式匹配什么字符串?
答:表达式由一个捕获组(dog)
,后跟一个贪婪量词{3}
组成。它与字符串“ dogdogdog”匹配。
练习题
1.练习:使用向后引用来编写仅当该人的名字和姓氏相同时才匹配该人的名字的表达式。
解: ([A-Z][a-zA-Z]*)\s\1