正则表达式对字符串的常见操作:
具体操作见API文档,只有基础Demo。
1、匹配( matches )
public static void main(String[] args) {
String tel = "15800001111";
/*{4}写成{4,4}也可以,{4, }代表出现次数 >=4*/
String regex = "158[0]{4}[1]{4}";
/* "\\d"在字符串中需要对\后面的字符进行转义,
* 一个'\'号给Java识别,另一个'\'号给正则表达式引擎识别*/
String regex2 = "1[358][0-9]{9}";//或1[358]\\d{9}
boolean b = tel.matches(regex);
System.out.println(b);
}
2、切割( split )
public static void main(String[] args) {
String str = "zhangsan xiaoqiang zhaoliu";//单词与单词之间的一个叫边界符。
String[] names = str.split(" +");//不加+号的话只切一个边界符。
String str2 = "zhangsan######xiaoqiang......zhaoliu";
String[] names2 = str2.split("(.)\\1+");//一个"."号,组默认从1开始,0组表示整个组.
for(String name : names) {
System.out.println(name+names2);
}
}
3、替换( replaceAll )
public static void main(String[] args) {
String str = "zhangsan######xiaoqiang......zhaoliu";
str = str.replaceAll("(.)\\1+", "$1");
//$1为获取组1中的内容进行替换。结果为zhangshan#xiaoqiang.zhaoliu
}
4、获取
public static void main(String[] args) {
String str = "da jia hao, ming tian bu fan jia!";
String regex = "\\b[a-z]{3}\\b";// \\b为边界限定。
//将正则规则进行对象的封装。
Pattern p = Pattern.compile(regex);
//通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配对象。
Matcher m = p.matcher(str);
//通过matcher匹配器对象的方法对字符串进行操作。
m.find();
System.out.println(m.group());//返回全部,去掉while返回第一个。
}