正则表达式
正则表达式的使用
-
匹配
- 使用的是String类中的boolean matches(String regex)方法
-
切割
- 使用的是String类中的 String[] split(String regex)方法
-
替换
- 使用的是String类中的 String replaceAll(String regex, String replacement)
实例
public class Demo3 {
public static void main(String[] args) {
// * 使用
// * 1.匹配
//piPei();
// * 2.切割
//qieGe();
// * 3.替换
//tiHuan();
// * 4.获取
huoQu();
}
// * 使用
// * 1.匹配
public static void piPei(){
//实例:匹配手机号 要求:1.全部是数字 2.是十一位 3.第二位不能是1,2,6,0,9 4.首位只能是1
// String s = "18911108765";
// String regex = "1[34578]\\d{9}";
//实例二:可以在b和k之间有0个或多个o
// X? X,一次或一次也没有
// X* X,零次或多次
// X+ X,一次或多次
String s = "booooooooook";
String regex = "bo*k";
boolean b = s.matches(regex);
System.out.println(b);
}
// * 2.切割
public static void qieGe(){
//实例:使用,进行切割
// String string = "hjdf,jiofj,weiof,jiowe,sjfoi,wrhgio,erjgo,ierjger,jgoir";
// String regex = ",";
//实例:要求按照空格切割
// String string = "hjdf jiofj,weiof jiowe,sjfo i,wrhgio,erjgo, ierjger,jgoir";
// String regex = " +";
//实例:
String string = "hjdf.jio.fj.weio.fj";
String regex = "\\.";//.代表任意字符
String[] strings = string.split(regex);
for (String string2 : strings) {
System.out.println(string2);
}
}
// * 3.替换
public static void tiHuan() {
//实例:将连续超过三个数字的部分替换成-****
String string = "helloworld33goodboy3644747bingbing7697808089chenchen35364757zhangsan888888lisi";
String regex = "\\d{4,}";
String newStr = "****";
String newString1 = string.replaceAll(regex, newStr);
System.out.println(newString1);
}
// * 4.获取
public static void huoQu() {
//实例:获取的是连续超过4个字母的子字符串
String s = "helloworld goodboy bingbing chenchen zhangsan lisi";
String regex = "[a-zA-Z]{4,}";
//相当于将当前的正则表达式进行了简单的转化,但是Pattern本身没有获取数据的能力
Pattern pattern = Pattern.compile(regex);
//有获取数据的能力
Matcher matcher = pattern.matcher(s);
// matcher.find();//判断是否有符合要求的内容
// matcher.group();//获取内容
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}