zoukankan      html  css  js  c++  java
  • java Regex匹配及解析文本

    用一个main程序展示下

    public static void main(String[] args){
           String text = "SSM<br>LOC<br>WUH 222046<br>CNL<br>CZ2834<br>23FEB16 23FEB16 2<br>CANWUH<br>RMK:NO PROT<br>=";
           text = text.replaceAll("<br>", "_");
           String singleLegFlightRegex = "^SSM[\w\s]+(CZ[0-9]{3,4}[a-zA-Z\s]?)_(\w{7}\s\w{7}\s[1-7]{1})[_\w\s\.\(\)]+([A-Z\s]{6,7})";

           //核心代码,匹配与查找
           Pattern pattern = Pattern.compile(singleLegFlightRegex);
           Matcher matcher = pattern.matcher(text);
           if(matcher.find()){
                 System.out.println(String.format("%6s,%16s,%s", matcher.group(1),matcher.group(2),matcher.group(3)));
           }
    }

    输出的结果:CZ2834,23FEB16 23FEB16 2,CANWUH

    简单说明下,  matcher.find() 会依次定位到符合regex的所有片段。 matcher.group(int i)这个对应整个片段中你的regex的子pattern, 1代表第一个(pattern),

    在上述的例子中就是指(CZ[0-9]{3,4}[a-zA-Z\s]?),依次类推。 0是整个匹配到的片段。

    因此用来在一段文本中提取信息。定义一个类似regex=".*(pattern1).*(pattern2).*",匹配之后利用matcher.group(i)来提取。

  • 相关阅读:
    springmvc+mybatis多数据源切换
    Tomcat 8.5 配置自动从http跳转https
    Tomcat 8.5 配置 域名绑定
    本地测试Tomcat配置Https访问
    Spring boot
    解决IDEA16闪退的问题
    cef
    spring-boot学习资料
    oracle 表空间不足解决办法
    oracle导出表的办法
  • 原文地址:https://www.cnblogs.com/surprizeFuture/p/5221055.html
Copyright © 2011-2022 走看看