1.基本正则表达式
正则表达式:正则表达式就是指,使用一些预先定义的特殊字符用来描述一个字符串的格式规则。可以使用格式规则用来匹配某个字符串是否符合格式要求
1.1"."和"\"
".":在正则表达式中表示任意一个字符
"\"是正则表达式中的转义字符,用来把正则表达式中正在使用的特殊字符转换为字符原本意思。
在"\"中有一些已经预定的特殊内容
"\d":表示任意一个数字
"\w":表示任意一个单词字符
"\s"表示任意一个空白字符(\t \r \n \f \x0B)
"\D"表示非任意一个数字
"\W"表示非任意一个单词字符
"\S"表示表示非空白字符
1.2[ ]表示单一字符,括号内定义字符的内容,也可以表示一段范围。
如:[0-9]值0-9中数字中的任意一个
[a-z]指a-z中的任意一个字母
[0123]指0、1、2、3中数字中的任意一个
1.3"*"、"+"、"?"
"*":表示内容可以出现0-多次
"+":表示内容可以出现1-多次
"?":表示内容可以出现0次或1次
如"\w+"表示至少出现一个单词字符
1.4{n}、{n,}、{n,m}
{n}:表示内容出现了你次
{n,}:表示内容至少出现了n次
{n,m}:表示内容出现了n到m次
如:"\d{11}"表示只能出现11次数字,可表示一个电话号码
1.5分组
分组可以使用()来将内容看成一个整体,其中以 | 来表示或的关系
如:(+86|0086)用来表示+86或0086
1.6 "^"和"$"
"^"用来表示正则表达式的开头,"$"用来表示正则表达式的末尾,如不是一起开始和结束,只能用来表示字符串的部分内容是否满足。
如:"\w{10}"表示字符串中只能出现10个单词字符
2、String正则相关API
2.1 matches方法,用来表示正则表达式描述的字符串规则是否匹配字符串
如下代码
/**
* 测试email是否合法,使用matches方法
*/
@Test
public void email(){
String emailRegEx=
"^[a-zA-z0-9_\\.-]+@([a-zA-z0-9-]+\\.)"
+ "+[a-zA-Z0-9]{2,4}$";
String email="bjliyi@tarena.com.cn";
System.out.println(email.matches(emailRegEx));
//输出结果为:true
}
2.2split方法,用来正则表达式描述的字符串规则来匹配字符串,把满足字符串的进行拆分,形成字符串数组
如下代码
/**
* 使用split方法拆分字符串
*/
@Test
public void testSpilt(){
//使用空格进行拆分
String str="java cpp php c# objective-c";
String[]strArr=str.split("\\s");
System.out.println(Arrays.toString(strArr));
//输出结果:[java, cpp, php, c#, objective-c]
//使用+、-、=进行拆分
String line="100+200-150=150";
strArr=line.split("(\\+|\\-|=)");
//strArr=line.split("[\\+\\-=]");
//System.out.println(strArr.length);
System.out.println(Arrays.toString(strArr));
//输出结果[100, 200, 150, 150]
}
2.3replaceAll:用来正则表达式表示的字符串规则来匹配字符串,并把匹配成功的替换成正则表达式后面的字符串
如下代码:
/**
* 使用replaceAll实现字符串的替换
*/
@Test
public void testReplaceAll(){
//将所有的数字替换为数字二字
String str="abc123bcd45ef6g7890";
str=str.replaceAll("\\d+","数字");
System.out.println(str);
//输出结果:abc数字bcd数字ef数字g数字
}