正则表达式(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匹配预定义字符需要进行转移文章来源:https://www.toymoban.com/news/detail-691306.html
-
PS:
"a".matches("\\d")
文章来源地址https://www.toymoban.com/news/detail-691306.html
数量词
- 说明:
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)
后面的字符才忽略大小写
到了这里,关于正则表达式(JAVA)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!