Lab3实验总结-正则匹配

正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。
在Lab3中,我们需要使用正则表达式匹配输入文件中的各条项目,筛选分拣到需要的信息,构建数据结构来存储轨道。下面总结一下写实验的过程中学到的关于正则表达式的知识。

  1. Java中的正则表达式需要二次转义。比如表示数字使用\d而非\d,表示正则表达式受到保护,不被 Java 字节码编译器解释

  2. 在进行正则匹配的时候,需要用到Pattern类和Matcher类
    Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建 一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法 接受一个正则表达式作为它的第一个参数。
    Matcher类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样, Matcher也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
    具体使用方法如下:
    String pattern = “(\D*)(\d+)(.*)”;

    // 创建 Pattern 对象
    Pattern r = Pattern.compile(pattern);

    // 现在创建 matcher 对象
    Matcher m = r.matcher(line);
    注意Matcher的find和match方法含义是不同的,前者是部分匹配,后者是精确匹配。

  3. 常用的正则语法
    [ a - z ]:字符集,[^ a - z ]:反向字符集
    |:或
    ^:以什么开始
    $:以什么结尾
    ?:零次或一次匹配
    *:零次或多次匹配前面的字符或子表达式
    +:一次或多次匹配前面的字符或子表达式
    还有一些常见的等效写法如\d,\S等,不赘述了。

  4. String也提供正则匹配的方法,还可以像matcher一样查找替换

  5. 程序中每次解析字符串的时候,都要check一下是否匹配上 matcher.matches() ,不然可能会产生错误或者漏过字符串。

  6. 由于输入文件里可能有空格或者空行,所以正则匹配前需要检查,将读到的空行利用continue过滤掉,将读到的字符串里的空格利用replaceALL替换成空串“”,这样就可以解决输入文件中格式不尽统一的问题。

猜你喜欢

转载自blog.csdn.net/qq_43351085/article/details/90814214