zoukankan      html  css  js  c++  java
  • Regex分组与Pattern正则表达式对象



    1.正则规则:
            1.String  regex  =  "[1-9]"          表示单个字符的取值范围是 1~9,注意是单个字符的取值范围
            2.String  regex  =  "\d"          "d"表示单个字符的类型是整型数字,注意是单个字符的取值范围
               String  regex  =  "\D"        "D"表示单个字符的类型是 非整型数字,"D" 和 "d" 是反义
            3.String  regex  =  "\d{1, 9}"      {最少出现次数, 最多出现次数} 表示 最少出现1个 最多出现9个 的字符是整型数字 
                 String  regex  =  "\d{1}"      {必须出现次数} 表示 必须出现1个 的字符是整型数字
                String  regex  =  "\d{1,}"      {至少出现次数} 表示 必须至少出现1个 的字符是整型数字
            4.String  regex  =  "[abc]"             表示单个字符的取值范围是a~c,注意是单个字符的取值范围
            5.String  regex  =  "[^abc]"        表示单个字符的取值范围不在a~c,注意是单个字符的取值范围
            6.String  regex  =  "[a-zA-Z]"    表示单个字符的取值范围不在a~z 或 A~Z,注意是单个字符的取值范围
            7.String  regex  =  "[a-z[A-Z]]"(并集)     "[a-z[A-Z]]" 等同于 "[a-zA-Z]",表示单个字符的取值范围不在a~z 或 A~Z 
             8.String  regex  =  "[a-z&&[def]]"(交集)    表示单个字符的取值为 d 或 e 或 f
             9.String  regex  =  "[a-z&&[^def]]"(减去)    表示单个字符的取值范围为a~z,但不包括 d 或 e 或 f
             10.String  regex  =  "[a-z&&[d-f]]"(减去)    表示单个字符的取值范围为a~z,但不在d~f范围之间
            11.String  regex  =  "..."            "."表示单个字符匹配任意一个字符值
            12.String  regex  =  "\."            "\."表示转义为普通字符"." ;
                                该转移之后普通字符"." 不再具有 匹配任意一个字符值的作用
            12.String  regex  =  "\s"            "s"表示单个字符匹配空白字符
                 String  regex  =  "\S"            "S"表示单个字符不能匹配空白字符;"S" 等同于 "^s";
            13. String  regex  =  "\w"            "w"表示单个字符匹配a~z 或 A~Z或 0~9;"w" 等同于 [a-zA-Z0-9]
                   String  regex  =  "\W"            "W"表示单个字符不能匹配a~z 或 A~Z或 0~9;"W" 等同于"^w"
             14.String  regex  =  "A?"            表示该字符A 必须出现 0次 或 1次
            15.String  regex  =  "A*"            表示该字符A 必须出现 0次 或 多次
            16String  regex  =  "A+"            表示该字符A 必须出现 1次 或 多次


    2.group分组:
            1.String  regex  = "((A)(B(C)))":第一个分组是整体((A)(B(C))),第二个分组是(A),第三个分组是(B(C)),第四个分组是(C)
                 String  regex  = "(A)\1":1 表示 引用(代表)第一个分组(A)
                 例子:
                    //(.)\1+:1 表示 引用的第一个分组(.)匹配出来的数据 可以是 一个或多个,即 (.)\1+ 相当于 "我+"
                     String  regex  =  "(.)\1+"
                     String   str  =   "我我我"
                     boolean  b  =   str.matches(regex)//true
                    
                     ------------------------------------------------------

                    String   str  =   "我我我爱爱爱渚渚渚"
                     // "(.)\1+":"1" 表示 引用的第一个分组"(.)"  匹配出来的数据,即 "(.)\1" 匹配出 "我" ,"(.)\1+"  匹配出 叠词  "我+"。
                    // 因为后面执行 replaceAll 所以会进行 多次匹配,所以最终"(.)\1+" 会进行多次匹配,得出 叠词 "我+"、"爱+"、"渚+"。
                    String  regex  =  "(.)\1+"

                    // replaceAll(regex,  "$1")表示把字符串中 所有的符合正则规则的数据 都被替换为 "$1"引用的第一个分组的数据。
                    // "$1" 和 "1" 意思一样, 都表示 引用 第一个分组"(.)"  匹配出来的数据  "我"、"爱"、"渚"。
                    // str.replaceAll(regex,  "$1"):表示把  "(.)\1+"替换为 "$1",即 "我+"、"爱+"、"渚+" 被分别替换为  "我"、"爱"、"渚"
                     //         regex: "(.)\1+" 匹配出 叠词 "我+"、"爱+"、"渚+";
                    //         "$1"和 "1" 都匹配出 "我"、"爱"、"渚"
                     String   newStr  =   str.replaceAll(regex,  "$1") //newStr  为 "我爱渚"


         3.Pattern正则表达式对象:
            1.Pattern  p  =  Pattern.compile(正则表达式字符串):把 正则表达式字符串 封装为 Pattern正则表达式对象p
             2.Matcher  m  =  p.matcher(String  str“需要进行匹配的”字符串):
                Pattern正则表达式对象调用matcher方法 去匹配 “需要进行匹配的”字符串,返回匹配正确出来的结果m;
                "Matcher  m" 可以包含匹配出来的一个或多个数据;
            3.m.find():判断 匹配出来的结果数据"Matcher  m" 是否为空
            4.String  str  =  m.group():
                每次只从匹配出来的结果数据"Matcher  m"中 取出一个数据,而"Matcher  m" 可以包含匹配出来的一个或多个匹配到的数据,
                所以需要循环执行 while(m.find()) 每次都判断结果数据"Matcher  m"中是否还存在数据,如返回true,
                说明剩余有数据可取出,然后执行 String  str  =  m.group() 取出 结果数据"Matcher  m"中的 一个数据,继续循环判断。

  • 相关阅读:
    PortalBasic Java Web 应用开发框架:应用篇(一) —— 配置文件
    PortalBasic Java Web 应用开发框架:应用篇(六) —— 公共组件
    PortalBasic Java Web 应用开发框架:应用篇(三) —— 国际化
    普通软件项目开发过程规范(五)—— 总结
    PortalBasic Java Web 应用开发框架:应用篇(四) —— 文件上传和下载
    PortalBasic Java Web 应用开发框架 —— 前言
    PortalBasic Java Web 应用开发框架:应用篇(二) —— Action 使用
    dll 问题 (转)
    不同服务器数据库之间的数据操作
    USB鼠标经常出现不能用的情况——解决方法
  • 原文地址:https://www.cnblogs.com/Raodi/p/11477845.html
Copyright © 2011-2022 走看看