• java正则表达式总结


        最近工作要使用文件上传解析,上传还好,但是在解析文件的时候,却踩到了好多坑,今天就说说其中的一块吧,正则匹配。

    由于上传的文件统一都是csv文件,所以在解析文本的时候,肯定要碰到正则表达式的,先解释一下,csv文件类似excel文件,但是各个数据之间是以逗号隔开的,而需求是,上传的csv文件中某些字段是json格式的字符串,这就是说,有可能json里面也是会有逗号的,因此,使用网上的代码或者java提供的api是不能满足需求的,必须要去手动解析文件。好了,下面我们讲解java语言下的正则表达式的用法。

         在java中要使用正则表达式常用的方法,请看如下代码:

     1     /* Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,
     2      pattern()返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数*/
     3     String sequence;
     4     Pattern indexPattern = Pattern.compile ("\[(.*?)\]");   //通过Pattern的静态方法去创建一个正则表达式
     5     //System.out.println(indexPattern.pattern());   //。 return:  \[(.*?)\]
     7     Matcher indexMatcher = indexPattern.matcher (sequence);  //进行匹配
     8     while(indexMatcher.find())//find方法是查找串中是否包含正则表达式的子串,matches()方法是去匹配串是否符合正则表达式的规则,一旦有一个子串不符合,返回false
     9     {
    10         System.out.println(indexMatcher.groupCount()+":"+indexMatcher.group());//group()函数存放的就是匹配的结果,也可以使用indexMatcher.start()和indexMatcher.end()函数来取得匹配到的子串在字符串中的位置索引
    11     }

     还有2个重要方法在此也要说明一下,就是正则表达式分割和替换:

    1 Pattern p=Pattern.compile("\d+"); //匹配数字  
    3 String[] str=p.split(sequence);   //分割
    5 String newSequence = sequence.replaceAll("\d+" , "#")  //将串中所有的数字都用#替换

     split()将模式串按照给定的正则表达式切割成字符串数组。

    下面我们讲讲正则表达式本身吧:有时候这么奇奇怪怪的一串却能让你少写很多的代码。下面整理了正则表达式的常用的语法:

     
    写法 符合匹配规则的串
    . 任何字符
    a?  a一次或一次也没有 
     a*  a零次或多次 
     a+ a一次或多次
     a{n}?  a恰好 n 次 
      a{n,}?
    a至少n次  
     a{n,m}? a至少n次,但是不超过m次 
    [abc] abc(简单类) 
     [^abc] 任何字符,除了 abc(否定) 
      [a-zA-Z] azAZ,两头的字母包括在内(范围) 
      [a-d[m-p]] admp[a-dm-p](并集)
     [a-z&&[def]] def(交集)  
    [a-z&&[^bc]]  
    az,除了 bc[ad-z](减去)  
     [a-z&&[^m-p]]  az,而非 mp[a-lq-z](减去)
    d 数字:[0-9]
    D 非数字: [^0-9]
    s 空白字符:[ x0Bf ]
    S 非空白字符:[^s]
    w 单词字符:[a-zA-Z_0-9]
    W 非单词字符:[^w]

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    关于java中的正则表达式的大概用法就总结道这里,还有很多细节的东西留在后面再作整理吧。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    vscode, cmake编译多个C++文件
    pytorch下的lib库 源码阅读笔记(1)
    pytorch学习笔记
    SSH无密码登录及远程拷贝命令SCP的使用
    Hadoop启动方式
    Hadoop出现的错误及处理
    Hadoop安装
    Hadoop生态系统图解
    shell脚本入门基础知识
    python中迷茫的编码问题
  • 原文地址:https://www.cnblogs.com/jy107600/p/7208438.html
Copyright © 2020-2023  润新知