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"中的 一个数据,继续循环判断。
Regex分组与Pattern正则表达式对象的更多相关文章
- Matcher Pattern 正则表达式 示例
示例 public class Test { public static void main(String[] args) throws IOException { Patte ...
- [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配
本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp ...
- 5.2.2 re模块方法与正则表达式对象
Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法,来实现,也可以把模式编译成正则表达式对象再使用. 方法 功能说明 complie(pattern[,flagss ...
- javascript操作正则表达式对象的方法总结
//正则表达式对象 /* var s = 'good good study day day up '; var r, re; re = new RegExp('study',"g" ...
- JS高级---创建正则表达式对象
创建正则表达式对象 两种: 1.通过构造函数创建对象 2.字面量的方式创建对象 正则表达式的作用: 匹配字符串的 //对象创建完毕--- var reg = new RegExp(/\d{5} ...
- java.util.regex.Pattern正则表达式写验证器示例
import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * */ public class Validator { /** * 正则表达式 ...
- (76)Wangdao.com第十四天_JavaScript 正则表达式对象 RegExp
RegExp Regular Expression,正则表达式是一种表达 文本模式(字符串结构) 的式子. 常常用来按照“给定模式”匹配文本.比如,正则表达式给出一个 Email 地址的模式, ...
- 笔记007:对象——RegExp正则表达式对象
1.RegExp 一个用于匹配的模式文本 用0个或多个修饰符描述的匹配模式细节 RegExp对象的创建形式 用内建构造器创建 var re = new RegExp("j.*t&quo ...
- RegExp正则表达式对象
JavaScript的RegExp对象有两种创建方式,一种是字面量,一种是对象. var r = /pattern/attributes或者new RegExp(pattern, attributes ...
随机推荐
- Spring框架入门之AOP
Spring框架入门之AOP 一.Spring AOP简单介绍 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented ...
- Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件
项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...
- HTTP 8中请求方式介绍
HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口 ...
- 关于web.xml配置
整理自网上: web应用是一种可以通过Web访问的应用程序.在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序. 最简单的web应用什么样? 2个文件夹.1个xml文件就能成为 ...
- LuoGu-P1239计数器-强大的贡献
P1239 计数器 题意:就是求从1到n间,1-9一共出现的次数 这道题直接暴力是不科学的,因为N有 1e9: 然后我就看到了一个很好的从贡献思考的方法: ——>转自洛谷学神的方法: 楼下dal ...
- Codeforces 1058 D. Vasya and Triangle 分解因子
传送门:http://codeforces.com/contest/1058/problem/D 题意: 在一个n*m的格点中,问能否找到三个点,使得这三个点围成的三角形面积是矩形的1/k. 思路: ...
- lightoj 1084 - Winter(dp+二分+线段树or其他数据结构)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1084 题解:不妨设dp[i] 表示考虑到第i个点时最少有几组那么 if a[i ...
- Redis哨兵模式实现集群的高可用
先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel ...
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- this指哪儿
this的指向问题 一.this初识 this是javascript中最复杂的机制之一.它尤为特殊,被自动定义在所有函数的作用域中.这篇文章将浅析this与函数的关系. 二.了解this 学习this ...