• 正则表达式之Pattern.MULTILINE Pattern.DOTALL


    参考地址:https://www.cjavapy.com/article/68/

    java 中正则表达式匹配多行Pattern.MULTILINE   和Pattern.DOTALL模式

    本文介绍java中正则表达式怎么样匹配换行符 从而实现多行匹配,

    1. Pattern.MULTILINE模式的用法

      正则表达式中出现^ $在默认的情况下只会匹配第一行,设置了MULTILINE模式回匹配所有行。

    Pattern p1 = Pattern.compile("^.*b.*$");
    //输出false,因为正则表达式中出现了^或$,默认只会匹配第一行,第二行的b匹配不到。
    System.out.println(p1.matcher("a
    b").find());
    Pattern p2 = Pattern.compile("^.*b.*$",Pattern.MULTILINE);
    //输出true,指定了Pattern.MULTILINE模式,就可以匹配多行了。
    System.out.println(p2.matcher("a
    b").find());

    2.Pattern.DOTAL模式的用法

    在默认的情况下(.)不会匹配换行符,设置了Pattern.DOTALL模式,才会匹配所有字符包括换行符

    Pattern p1 = Pattern.compile("a.*b");
    //输出false,默认点(.)没有匹配换行符
    System.out.println(p1.matcher("a
    b").find());
    Pattern p2 = Pattern.compile("a.*b", Pattern.DOTALL);
    //输出true,指定Pattern.DOTALL模式,可以匹配换行符。
    System.out.println(p2.matcher("a
    b").find());

    3. 同时使用Pattern.MULTILINE和Pattern.DOTALL

    实际的情况中要比较复杂。

    Pattern p1 = Pattern.compile("^a.*b$");
    //输出false
    System.out.println(p1.matcher("cc
    a
    b").find());
    Pattern p2 = Pattern.compile("^a.*b$", Pattern.DOTALL);
    //输出false,因为有^或&没有匹配到下一行
    System.out.println(p2.matcher("cc
    a
    b").find());
    Pattern p3 = Pattern.compile("^a.*b$", Pattern.MULTILINE);
    //输出false,匹配到下一行,但.没有匹配换行符
    System.out.println(p3.matcher("cc
    a
    b").find());
    //指定多个模式,中间用|隔开
    Pattern p4 = Pattern.compile("^a.*b$", Pattern.DOTALL|Pattern.MULTILINE);
    //输出true
    System.out.println(p4.matcher("cc
    a
    b").find());
  • 相关阅读:
    如何写一个完整课堂管理系统(数据库增删改查)
    关于java异常处理的思考
    java03类与对象相关问题
    java02实验:方法
    java02动手动脑
    java课堂动手动脑及课后实验总结
    java测试银行系统源代码
    JAVA程序系统测试感受
    2018年第八周暑假进度报告
    2018第七周进度总结报告
  • 原文地址:https://www.cnblogs.com/dousil/p/12855468.html
Copyright © 2020-2023  润新知