zoukankan      html  css  js  c++  java
  • 正则表达式之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());
  • 相关阅读:
    Android绘制文本对象FontMetrics介绍及繪製文本 (转)
    实机调试无法输出LogCat的解决办法
    android 获取 imei号码 和 获取手机型号和系统版本号(未验证)
    Android原理之动态墙纸 (转)
    wp7 中的des 加解密
    ViewPager多页面滑动切换以及动画效果 (转载)
    中央气象台的天气预报API 中国城市数据库
    SQLite日期类型
    JDK1.5及API完整中文版CHM下载地址
    myeclipse8.5注册码生成
  • 原文地址:https://www.cnblogs.com/dousil/p/12855468.html
Copyright © 2011-2022 走看看