正则表达式笔记总结

正则表达式:

正则表达式用于操作字符串数据,是通过一些特定的符号来体现的。

所以我们为了掌握正则表达式,必须要学习一些符号。

正则表达式简化了书写,但是阅读性较差。

 

 一、正则表达式基础知识

 

字符类:

[abc]a,b或c(简单类)

[^abc]任何字符除了a,b或c。

[a-zA-Z]a-z或A-Z,两头的字母都包含在内,

[a-z&&[^bc]]a-z,除了bc和[ad-z]等效

预定义字符类:

.任何字符。

\d数组0-9 [0-9]

\D非数字[^0-9]

\s空白字符

\S非空白字符[^\s]

\w单词字符[a-zA-Z_0-9]

\W非单词字符[^\w]

边界匹配器

^行的开头

$行的结尾

\b单词边界

数量词:

X?X,一次或一次也没有。

X*X,0次或多次

X+X,一次或多次

X{n,}X,至少n次

X{n,m}X,至少n次,但是不超过m次

二、正则表达式常见的功能

1.匹配:其实就是String类中的matches方法。

例:匹配手机号码是否正确。

String tel = "13333333333";

String reg ="1[358]\\d{9}";

boolean b = tel.matches(reg);

System.out.println(b);

2.切割:其实就是String类中的split方法。

例:

String str = "xiaoqiangttttwangcaimmmmmzhangsan";

String[] names = str.split("(.)\\1+");

for(String name : names){

System.out.println(name);

}

3.替换:使用的是String类中的replaceAll方法。

注意:一个方法里第一个参数是正则,第二个参数想要使用第一个参数正则中的内容,

可以使用美元符号来表示。

例1:

String str = "xiaoqiangttttwangcaimmmmmzhangsan";

str = str.replaceAll("(.)\\1+", "$1");

System.out.println(str);//xiaoqiangtwangcaimzhangsan

例2:

String tel = "13312345678";

tel = tel.replaceAll("(\\d{3})(\\d{4})(\\d{4})","$1****$3");

4.获取:

需要使用java.uitl.regex中的Pattern对象。

范例:

将正则规则进行对象的封装。

Pattern p = Pattern.compile(regex);

通过正则对象的matcher方法和字符串关联获取要对字符串操作的匹配器对象Matcher。

Matcher m = p.matcher(input);

通过Matcher匹配器对象的方法对字符串进行操作。

boolean b = m.matches();

Matcher中的常用方法:

boolean find();

String  group();

intstart();

intend();

例:

String str = "da jia hao ming tian xiu xi shi bu ke neng";

String regex = "\\b[a-z]{3}\\b";

//将正则规则进行对象的封装。

Pattern p = Pattern.compile(regex);

//通过正则对象的matcher方法和字符串关联获取要对字符串操作的匹配器对象Matcher。

Matcher m = p.matcher(str);

//通过Matcher匹配器对象的方法对字符串进行操作。

while(m.find()){

System.out.println(m.group());

System.out.println(m.start()+":"+m.end());

}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值