博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thinking in java(八)-正则表达式
阅读量:4059 次
发布时间:2019-05-25

本文共 3226 字,大约阅读时间需要 10 分钟。

正则表达式

1.
正则表达式符号介绍:正则表达式一般也需要使用字符串进行展示:
1、一般符号
x: 指的是普通字符,x代表的是未知数,代表着任何一个普通字符,举例x可以代表a,也可以代表b,同时也可以代表c等普通字符。
举例说明:”a[1-9][0-9]{4,11}”这里所写的a就是普通字符x中的一种,这时x就代表a,那么也就是说此正则表达式的第一位只能是普通字符a;

\ : 表示反斜线 例:“\” 在正则中就是“\”

\t :制表符。相当于tab键。

2、给出某个位置上可以出现的多个字符

[ ]表示范围的意思。表示某一位上可以出现的字符数据,如果正则中需要匹配的某个字符串中某一位上的字符是唯一的,这时可以省略中括号。
[abc] 表示要么是a要么是b还可以是c(只能是其中任意一个)
例:”NBA” 正则:”N[ABC]A” 匹配正确:NBA NAA NCA
[^abc] 当前要匹配的某个字符串中的某一位上不能是a 或b 或c(除了a,b,c都可以)
[a-z] 表示26个小写字母
[A-Z] 表示26个大写字母
[a-zA-Z] 表示26个大小写字母
[a-d[m-p]] 当前要匹配的某个字符串中的某一位上 可以是a -d 或 m - p 的字符
[a-d&&[d-f]] 表示只能是d。必须在两个范围中都要符合 。(交集)
[a-d&&[^d-f]] 表示只能是a,b,c
[a-z&&[^xyz]] 表示只能是除去x,y,z后的所有小写字母
[0-9] 表示0~9之间任意数字

3、提前定义好的一些符号,可以代替上述的[]书写的范围

. 点 表示当前需要匹配的字符串位置上可以是任意的字符。例:以a开始后面可以是任意字符 “a.” (如果想要的不是任意字符,而是“.”那么要转义,\.)

\d 表示数字。[0-9] 例:“A[\d]C” 表示A和C之间可以任意的0~9之间的数字。
说明:为什么在上述正则表达式“A[\d]C”中书写\d,而不是直接书写\d呢?
\d 代表着正则表达式中的一个符号,\和d放在一起代表0~9的十个数字。一旦将\d书写在””双引号中作为字符串,会出现一个问题,\就会把这个d转义了,一旦转义就不表示\d是一起的了,那怎么解决这种问题呢?
我们应该在\d前面在加一个,如:\d,第一个 \ 表示将第二个 \ 转义成普通的反斜线字符,而变成普通的反斜线之后和d组合就代表着正则中的数字,所以我们需要这样写:”\d” 等同于”[0-9]”

总结:以后只要在正则表达式中有\的,我们都写两个\。

\D 表示非数字。[^0-9]

\w 表示[a-zA-Z_0-9]。可以是任意数字、任意大小写字母、下划线。
\W 表示[^a-zA-Z_0-9]表示和\w相反。
4、边界匹配

^ 表示行的开头 例:“^h.” 表示只能是以h作为开头

h.o 表 示 行 的 结 尾 例 : ” h . o ” 表示只能以h作为开头,以o作来结尾

5、数量词:表示当前正则表达式中某个规则可以出现的次数。 注意:数量词前面必须有存在正则符号。

“A?” 表示当前需要匹配字符串这个位置开始往后大写字母A可以出现零次或一次;

举例:”[0-9]?”表示在当前的字符串位置上0~9之间的任何一个数只能出现零次或者一次;

“A*” 表示当前需要匹配字符串这个位置开始往后大写字母A可以出现零次或多次;

举例:”[0-9]*”表示在当前的字符串位置上0~9之间的任何一个数可以出现零次或者一次或者多次;

“A+” 表示当前需要匹配字符串这个位置开始往后大写字母A可以出现一次或多次;

举例:”[0-9]+”表示在当前的字符串位置上0~9之间的任何一个数可以出现一次或者多次;

“A{n}”—-> “A{10}” 表示当前需要匹配字符串这个位置开始往后大写字母A必须出现10次;

举例:”[0-9]{10}”表示在当前的字符串位置上0~9之间的任何一个数可以出现10次;

“A{n,}—–>”“A{10,}”表示当前需要匹配字符串这个位置开始往后大写字母A最少出现10次;

举例:”[0-9]{10,}”表示在当前的字符串位置上0~9之间的任何一个数最少出现10次;

“A{n,m}”—->“A{10,20}”表示当前需要匹配字符串这个位置开始往后大写字母A最少出现10次,最多20次;

举例:”[0-9]{10,20}”表示在当前的字符串位置上0~9之间的任何一个数最少出现10次,最多20次;

正则的符号:. 表示任意的字符() 对已经存在的正则进行分组 同一正则引入组 \\编号 ,不同 $编号[] 某个字符串位置上可以出现的字符列表{
}当前某个正则规则出现的次数? 表示当前的规则可以出现零次或一次* 表示当前的规则可以出现零次或一次或多次 + 表示当前的规则可以出现一次或多次\d 数字字符 [0-9]\w 数字 字母 下划线[0-9a-zA-Z_]^ 表示行的开头 例:“^h.” 表示只能是以h作为开头$ 表示行的结尾 例:”^h.o$” 表示只能以h作为开头,以o作来结尾a) [ ]表示范围;[abc] 表示要么是a要么是b还可以是c(只能是其中任意一个)b) \\ : 表示反斜线 例:“\\” 在正则中就是“\”c) [a-zA-Z] 表示26个大小写字母d) [0-9] 表示0~9之间任意数字

2.功能介绍

正则表达式的主要功能:
它主要是用来对字符串进行操作:匹配(验证)、切割、替换、获取。
匹配:
boolean matches(String regex)字符串是否匹配regex
切割:
string[] split(String regex)
string[] split(String regex,int limit)
String replaceAll(String regex,String replacement)使用给定的replacement替换此字符串所有匹配的给定的regex子字符串.
获取:
正则对象和匹配器的使用:
1、需要把一个正则表达式,通过Pattern类中的compile函数编译成正则对象;
2、使用Pattern类中matcher方法让正则对象和需要操作的字符串产生关系,得到一个匹配器对象;
使用匹配器中的find进行匹配,使用group方法获取到匹配到的字符串;
两个对象:
1、正则表达式对象
2、匹配器对象

“/**

*@desc 正则表达式对象pattern
*/
public class PatternDemo{
public static void main(String[] args){
String regex = “1[34578][0-9]{9}”;
//Pattern对象
Pattern pattern =- Pattern.compile(regex);
String s = “qwqe13555262366”;
//获取匹配器
Mathcer matcher =pattern.matcher(s);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
“`
正则对象和匹配器的使用:
1、需要把一个正则表达式,通过Pattern类中的compile函数编译成正则对象;
2、使用Pattern类中matcher方法让正则对象和需要操作的字符串产生关系,得到一个匹配器对象
3、使用匹配器中的find进行匹配,使用group方法获取到匹配到的字符串;

正则中的组:用()封装,顺序从1开始,如果要使用组 \组号

a) “([a-z_A-Z])bc\1”

基本包装类型:

这里写图片描述

你可能感兴趣的文章
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
uni-app 全局变量
查看>>
js判断空对象的几种方法
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>