# 问题与答案

  1. 问题:java.util.regex 包中主要的三个类是什么?作用是什么?

    • Pattern 是正则表达式的编译表示
    • Matcher 是解析模式并针对输入字符串执行匹配操作的引擎
    • PatternSyntaxException 定义一个未经检查的异常,指示正则表达式中的语法错误。
  2. 问题:考虑字符串文字“foo”。什么是其实索引,什么是结束索引?

    字符串中的每个字符都驻留在其自己的单元格中。指标位置执行单元格之间。字符串“foo”从索引 0 开始,以索引 3 结束,即使字符只占用单元格 0,1,2

  3. 问题:普通字符和元字符之间有什么区别?举个列子

    正则表达式中的普通字符本身匹配。元字符是影响模式匹配方式的特殊字符。A 是一个普通的字符,标点符号 “.” 是匹配任何单个字符的元字符

  4. 问题: 如何把一个元字符转换成一个普通字符

    有两种方法:

    1. 前面用反斜杠\,如\\.
    2. 在引号表达式\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”

  9. 使用反向引用来编写一个与人名匹配的表达式,只有姓氏和名相同才算正确

    ([A-Z][a-zA-Z]*)\s\1 ; 外国人姓名和国人的不一样,还要求大写和 空格