加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Regex分组与Pattern正则表达式对象

发布时间:2020-12-14 05:35:20 所属栏目:百科 来源:网络整理
导读:1.正则规则: ??????? 1.String? regex? =? "[1-9]"????????? 表示单个字符的取值范围是 1~9,注意是单个字符的取值范围 ??????? 2.String? regex? =? "d"????????? "d"表示单个字符的类型是整型数字,注意是单个字符的取值范围 ?????????? String? regex


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读