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"中的 一个数据,继续循环判断。

Regex分组与Pattern正则表达式对象的更多相关文章

  1. Matcher Pattern 正则表达式 示例

    示例 public class Test {     public static void main(String[] args) throws IOException {         Patte ...

  2. [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配

    本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp  ...

  3. 5.2.2 re模块方法与正则表达式对象

    Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法,来实现,也可以把模式编译成正则表达式对象再使用. 方法 功能说明 complie(pattern[,flagss ...

  4. javascript操作正则表达式对象的方法总结

    //正则表达式对象 /* var s = 'good good study day day up '; var r, re; re = new RegExp('study',"g" ...

  5. JS高级---创建正则表达式对象

    创建正则表达式对象 两种: 1.通过构造函数创建对象 2.字面量的方式创建对象   正则表达式的作用: 匹配字符串的   //对象创建完毕--- var reg = new RegExp(/\d{5} ...

  6. java.util.regex.Pattern正则表达式写验证器示例

    import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * */ public class Validator { /** * 正则表达式 ...

  7. (76)Wangdao.com第十四天_JavaScript 正则表达式对象 RegExp

    RegExp Regular Expression,正则表达式是一种表达    文本模式(字符串结构)  的式子. 常常用来按照“给定模式”匹配文本.比如,正则表达式给出一个 Email 地址的模式, ...

  8. 笔记007:对象——RegExp正则表达式对象

    1.RegExp 一个用于匹配的模式文本 用0个或多个修饰符描述的匹配模式细节 RegExp对象的创建形式 用内建构造器创建    var re = new RegExp("j.*t&quo ...

  9. RegExp正则表达式对象

    JavaScript的RegExp对象有两种创建方式,一种是字面量,一种是对象. var r = /pattern/attributes或者new RegExp(pattern, attributes ...

随机推荐

  1. JDBC之PreparedStatement

    JDBC之PreparedStatement 一.java.sql.PreparedStatement接口简介 该接口表示预编译的 SQL 语句的对象. SQL 语句被预编译并存储在 Prepared ...

  2. 重识 ArrayList

    前言 ArrayList 作为 Java 集合框架中最常用的类,在一般情况下,用它存储集合数据最适合不过.知其然知其所以然,为了能更好地认识和使用 ArrayList,本文将从下面几方面深入理解 Ar ...

  3. Netty源码分析 (二)----- ServerBootstrap

    BootStrap在netty的应用程序中负责引导服务器和客户端.netty包含了两种不同类型的引导: 1. 使用服务器的ServerBootStrap,用于接受客户端的连接以及为已接受的连接创建子通 ...

  4. 牛客-小a的旅行计划 + 数学推导

    小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...

  5. manacher --- 暂 旧版本

    #include<bits/stdc++.h> using namespace std; ; ]; int n; ]; void manacher() { memset(len, , si ...

  6. codeforces 762 D. Maximum path(dp)

    题目链接:http://codeforces.com/problemset/problem/762/D 题意:给出一个3*n的矩阵然后问从左上角到右下角最大权值是多少,而且每一个点可以走上下左右,但是 ...

  7. Redis集群下过期key监听

    1. 前言 在使用redis集群时,发现过期key始终监听不到.网上也没有现成的解决方案.于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听.以上做法可 ...

  8. List集合的排序

    最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序, 当时第一想法便是写一个f ...

  9. Android Activity启动耗时统计方案

    作者:林基宗 Activity的启动速度是很多开发者关心的问题,当页面跳转耗时过长时,App就会给人一种非常笨重的感觉.在遇到某个页面启动过慢的时候,开发的第一直觉一般是onCreate执行速度太慢了 ...

  10. 了解css中px、em、rem的区别并使用Flexible实现vue移动端的适配

    本人java菜鸟一名,若有错误,还请见谅. 1.px和em和rem的定义和区别 px:px像素,是相对单位,相对于屏幕的分辨率而言,也就是说,当屏幕的分辨率不同那么px相同,实际看到的大小也会不同. ...