正则表达式。
正则表达式用于操作字符串数据。
通过一些特定的符号来体现的。
要掌握正则表达式,必须学习一些符号。
例:"[1-9][0-9]{4,14}"表示第一个字符是1-9任意一个数字,4-14个字符是0-9的数字只能有5-15个字符。
虽然简化,但是阅读性差。
1,匹配:
使用的就是String类中的matches方法。
2,切割:
使用的就是String类中的split方法。
3,替换:
使用的就是String类中的replaceAll();方法
4,获取:
基础用法:
字符:
x:表示准确字符x
\反斜杠字符 转义字符
换行符
回车符
字符类:
[abc] a、b或c
[^abc] 除了a、b和c
[a-zA-Z]a到 z或 A 到Z的字母
[0-9]0到9的字符
预定义字符类:
.任意字符 输入.用.
d 数字[0-9]
w 单词字符[a-zA-Z0-9]
边界匹配器:
^ 行的开头
$ 行的结尾
单词边界
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
代码举例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
functionDemo_4();
}
/*
* 获取:
* 将正则规则对象的封装。
* Pattern p=Pattern.complie("a*b");
* //通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher.
* Matcher m=p.matcher("aaaab");
* //通过Matcher匹配器对象的方法对字符串进行操作。
* boolean b=m.matches();
*/
public static void functionDemo_4() {
String str="ni hao,jie xia lai gai zen me zuo ne memeda";
String regex="\b[a-z]{3}\b";
//1,将正则封装成对象
Pattern p=Pattern.compile(regex);
//2,通过正则对象获取匹配器对象
Matcher m=p.matcher(str);
//使用Matcher对象的方法对字符串进行操作。
//获取三个字母组成的单词
//查找:find();
System.out.println(str);
while(m.find()){
System.out.println(m.group());//获取匹配的子序列
System.out.println(m.start()+":"+m.end());
}
}
public static void functionDemo_3() {
String str="zhangsanttttlisinnnnxiaoqiang";
str=str.replaceAll("(.)\1+", "$1");//$1表示获取前面正则中的第一个组
String tel="15811112222";
tel=tel.replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2");
System.out.println(str);
System.out.println(tel);
}
public static void functionDemo_2() {
/*
* 切割
*
* 组((A)(B(C)))
* 1,((A)(B(C)))
* 2,A
* 3,(B(C))
* 4,(C)
*/
String str="zhangsan lisi xiaoqiang";
//String[] names=str.split(" +");//如果名字之间是一个空格,正则就用" ";如果有多个空格,就用" +";
//如果为.正则就用"\.";
String str1="zhangsanttttlisinnnnxiaoqiang";
String[] names=str1.split("(.)\1+");//表示从有重复元素的地方切割
//正则中封装对象用()
for(String name:names){
System.out.println(name);
}
}
public static void functionDemo_1() {
//验证手机号是否符合格式
String tel="15200001111";
String regex="[1][358][0-9]{9}";//可以将[0-9]转成"\d",表示数字
boolean b=tel.matches(regex);
System.out.println(tel+":"+b);
}
}