江门广告网站推广技巧棕色网站模板
正则表达式(JAVA)
文章目录
- 正则表达式(JAVA)
 - 用法
 - 字符类(只匹配一个字符)
 - 预定义字符(只匹配一个字符)
 - 数量词
 - 贪婪爬取
 - 符号
 - 捕获分组
 - 规则
 - 捕获分组
 - 符号
 
- 非捕获分组
 - 案例
 - 忽略大小写
 
用法
-  
正则表达式在用于校验信息是否满足某些规则的时候,非常的好用
 -  
在文本中查找满足要求的内容
 
字符类(只匹配一个字符)
| 符号 | 作用 | 补充 | 
|---|---|---|
[abc] | 只能是a,b或c | 匹配的一个字符只能是[]范围内的其中一个 | 
[^abc] | 除了a,b,c之外的任何字符 | ^符号类似非 | 
[a-zA-Z] | a到z A到Z ,包括范围 | -作用是由…到… ,两个或多个范围之间不需要任何符号 | 
[a-d[m-p]] | a到d,或m到p | 两个[]之间嵌套表示字符为其中之一 | 
[a-z&&[def]] | a-z和def的交集 | &&为交集符号,匹配的字符是交集范围内容 | 
[a-z&&[^bc]] | a-z和非bc的交集 | 和上一个基本一致 | 
 [a-z&&[ ^m-p]] | a-z和除了m到p的交集 | 存在运算优先级 | 
- 单个字符匹配JAVA方法: 
单个字符.matches(正则表达式)返回值是布尔类型 
预定义字符(只匹配一个字符)
| 符号 | 作用 | 补充 | 
|---|---|---|
. | 匹配 任何字符 | |
\d | 匹配 一个数字 | |
\D | 匹配 非数字 | |
\s | 匹配 空白字符 ([\t\n\x0B\f\r]) | |
\w | 匹配 [a-zA-Z_0-9] 英文,数字,下划线 | |
\W | 匹配 [ ^\w] 一个非 英文,数字,下划线 字符 | 
-  
java中的
\表示转义字符 -  
java匹配预定义字符需要进行转移
 -  
PS:
"a".matches("\\d") 
数量词
- 说明: 
X代表任意字符 - 可以配合上面的内容实现多符号匹配
 
| 符号 | 作用 | 补充 | 
|---|---|---|
X? | X 出现 一次或0次 | |
X* | X 出现 零次或多次 | |
X+ | X 出现 一次或多次 | |
X{n} | X 出现 正好n次 | {}代表出现的次数 | 
X{n, } | X 出现 至少n次 | |
X{n,m} | X 出现 至少n次但不超过m次 | 
- PS: 
"23dF.matches("[\\w&&[^_]]{4}")" - 解析: 字符在
\\w去除_的条件下,出现4次,所以结果是true 
贪婪爬取
- 贪婪爬取: 在爬取数据的时候尽可能多得获取数据 
- 符号: 
+,* - PS: 
ab+ 
 - 符号: 
 - 非贪婪爬取: 在爬取数据时尽可能少的获取数据 
- 符号: 
+?,*? - PS:
ab*? 
 - 符号: 
 
符号
| 符号 | 作用 | 
|---|---|
| ` | ` | 
&& | 相交 | 
\ | 转义字符 | 
() | 分组 | 
[] | 范围 | 
{} | 次数 | 
捕获分组
规则
- 规则1: 从1开始
 - 规则2: 以左括号为基准,最左边的是第一组,其次是第二组,依次类推
 - PS: 
(\\d+(\\d+)\\d+) 
捕获分组
- 在某些情况下我们并不知道一个统一的标准,只知道一些要求时,需要使用捕获分组,也就是通过捕获某一组的数据,然后再使用
 - PS : 判断一个字符串的开始字符和结束字符是否一致
 - 举例: 
a123a----> Java正则表达式==>(.).+\\1 - 解释: 后面的
\\1的意思是拿到第一组的数据复用,这里的1代指第一组 - 理解: 
(.+)每一个.+直到获取的数据和原来不是同一类型会自动结束 
符号
\\: 内部$: 外部
非捕获分组
| 符号 | 作用 | 
|---|---|
(?:正则) | 获取所有 | 
(?=正则) | 获取前面部分 | 
(?!正则) | 获取不是指定内容的前面部分 | 
- 含义: 分组之后不需要再用本组数据,仅仅是把数据括起来,括起来的表达式不在占用组号
 - 更多会使用第一个
 
案例
忽略大小写
- PS: 
"(?i)字符"表示对后面的字符忽略大小写 System.*out*.println("aB".matches("(?i)ab"));---->true(?i)后面的字符才忽略大小写
