正则表达式
对字符串匹配,替换,切割,查找.
匹配
String.matches(正则表达式)
[0-9] 数字0-9
[0-9]{5,10} 出现5-10次
. 是通配符,匹配任何的字符 双斜杠转义. 或者[.]
{1,} 和+ 都是一次或多次
切割
String.split(正则); +号出现一次或多次
public static void f1(){
String ip = "123.........146.........11........120";
String regex = "[.]+";
String[] strs = ip.split(regex);
System.out.println(Arrays.toString(strs));
}
public static void f2(){
String ip = "123+++146+++++++++11++120";
String regex = "\\++";
String[] strs = ip.split(regex);
System.out.println(Arrays.toString(strs));
}
替换
String.replaceAll(正则,value) ; 满足正则表达式的被value替换.
String.replaceAll( “(.)\1+”,"$1")
public static void f1(){
String str = "aaaaaabbbbaaaaaaaaaacaaaaaaaa";
str = str.replaceAll("a+","a");
System.out.println(str);
}
// 叠词替换 我我我我我爱爱爱爱中中中中中中中中国
public static void f3(){
String str = "我我我我我爱爱爱爱中中中中中中中中国";
str = str.replaceAll("(.)\\1+","$1");
System.out.println(str);
};正则解析:()是分组,起名为1要转义,
调用名1的组
查找
public static void f(){
String str = "Today are a lucky day,let us play piano tomorrow";
Pattern pa = Pattern.compile("\\b[a-zA-Z]{5}\\b");
Matcher matcher = pa.matcher(str);
int c = 0;
while (matcher.find()){
c ++;
System.out.println(matcher.group());
}
System.out.println(c);
}