Java 实现正则表达式
概念:
用来描述或者匹配一系列符合某个语句规则的字符串
单个符号:
1、英文句点.符号:匹配单个任意字符。
表达式t.o 可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。
2、中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。
表达式:t[abcd]n 只可以匹配:tan,tbn,tcn,tdn。不可以匹配:thn,tabn,tn等。
3、| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。
表达式:t(a|b|c|dd)n 只可以匹配:tan,tbn,tcn,tddn。不可以匹配taan,tn,tabcn等。
4、符号:表示否,如果用在方括号内,表示不想匹配的字符。
表达式:[^x] 第一个字符不能是x
5、\S符号:非空字符
6、\s符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。
7、\r符号:空格符,与\n、\tab相同
快捷符号
1、\d表示[0—9]
2、\D表示[^0—9]
3、\w表示[0—9A—Z_a—z]
4、\W表示[^0—9A—Z_a—z]
5、\s表示[\t\n\r\f]
6、\S表示[^\t\n\r\f]
Java中的应用
1.判断作用:
public boolean matches(String regex)
String regex = "1[49]\\d{9}";//判断是否是14或者19开头的手机号。{9}字符串为10位(不包括1)
boolean flag = s.matches(regex);//执行判断功能
2 分割作用:
splitDemo("erkktyqqquizzzzo","(.)\\1+");//按照叠词切割,输出不为叠词的字符
public static void splitDemo(String str,String reg)
{
//String reg=" +";//按照多个空格来进行切割
String[] arr=str.split(reg);//以正则表达式的规则来切割
System.out.println(arr.length);
for(String s:arr)
{
System.out.println(s);
}
}
结果:
4
er
ty
ui
o
3 替换作用:
String str="wqe525235325gf5367676dfg142142424";//将字符串中的数组替换成#
replaceAllDemo(str,"\\d{5,}","#");//把超过连续5个或以上的数字替换为#号
String str1="efjjhhhhhwqqqiiiiiiiiio";//将叠词替换成单个字母。hhhh——>h
replaceAllDemo(str1,"(.)\\1+","$1");//任意一个字符,它的下一个字符或多个重复,则将叠词换为单个字符
}
结果:
wqe#gf#dfg#
efjhwqio