------- android培训、java培训、期待与您交流! ----------
一 正则表达式
1 正则表达式是符合一定规则的表达
2 作用:专门用于操作字符串
3 好处:可以简化对字符串的操作
4 弊处:定义越多,阅读性差
4 特点:用一些特定的符号表示代码操作,可以简化书写
5 摘要:
(1)字符类 :
[abc]:只能 a、b 或 c
[^abc]:任何字符,除了 a、b 或 c
[a-zA-Z]:表示a 到 z 或 A 到 Z
(2)预定义字符类
.:表示任何字符
\d:数字[0-9]
\D:非数字 [^0-9]
\w:单词字符 [a-zA-Z_0-9]
\W:非单词字符 [^\w]
(3)数量词
X?:X,一次或一次也没有
X*:X,零次或多次
X+:X,一次或多次
X{n}:X,恰好 n 次
X{n,}:X,至少 n 次
X{n,m}:X,至少 n 次,但是不超过 m 次
6 关于正则表达式的方法
(1)String类中的matches(String regex);//匹配,返回boolean型
例子:
class MatchesDemo
{
public static void main(String[] args)
{
//校验qq号
String qq="22a2222";
//定义个规则,第一位是0-9,第二位0-9,总共是5-15位
String regex1="[1-9]\\d{4,14}";
//匹配qq号
boolean b1=qq.matches(regex1);
System.out.println(b1);
//校验手机号
String tel="1582a347544";
//定义规则,第一位只能是1,第二位可以是358,必须是11位
String regex2="1[358]\\d{9}";
//匹配手机号
boolean b2=tel.matches(regex2);
System.out.println(b2);
}
}
(2)String类中的split(String regex);//切割,返回字符串数组
例子:
class SplitDemo
{
public static void main(String[] args)
{
String s1="a..b...c.";
//规则:按.切,但是.是特殊字符,所以要转义
String regex1="\\.+";
String[] str1=s1.split(regex1);
for(String str:str1)
{
System.out.println(str);
}
System.out.println("------------------------");
String s2="ddaffbttc";
//规则:按叠词切,需要用到组(.)\\1
String regex2="(.)\\1";
String[] str2=s2.split(regex2);
for(String str:str2)
{
System.out.println(str);
}
}
}
(3)String类中的replaceAll(String regex,String newstr);//替换,将符合规则的字符串替换成指定的字符串,返回一个字符串
例子:
class ReplaceAllDemo
{
public static void main(String[] args)
{
String s1="ffffasssbjjjjcdddddd";
//规则:叠词
String regex1="(.)\\1+";
//将叠词替换成单个#
String s2=s1.replaceAll(regex1,"#");
System.out.println(s2);
//将叠词替换成单个单词
String s3=s1.replaceAll(regex2,"$1");
//注意:美元符号的意思是拿前面规则的第一个组
System.out.println(s3);
}
}
(4)获取:获取字符串中符合规则的字符串
1 将正则表达式封装成对象,Pattern类
2 将字符串与正则表达式对象相关联
3 关联后获取正则匹配器,Matcher类
4 通过匹配对符合规则的子串进行操作
例子:
import java.util.regex.*;
class GetDemo
{
public static void main(String[] args)
{
String str="aaa bbbb ccc dddd eee ffff";
//定义规则
String regex="\\b[a-z]{3}\\b";
//将规则封装成对象
Pattern p=Pattern.compile(regex);
//让字符串与正则对象相关联,并获取匹配器
Matcher m=p.matcher(str);
//获取符规则的子串
while(m.find())//查找
{
//获取子串
System.out.println(m.group());
//获取子串的开始位和结束位
System.out.println(m.start()+"::"+m.end());
}
}
}