1、String类的正则使用
1.1 匹配功能
boolean flag = str.matches(regex);
public class Demo2{
public static void main(String[] args) {
//只能输入数字
String str = "12435423a2";
boolean flag = str.matches("[0-9]+");
System.out.println(flag?"输入正确":"只能输入数字");
}
}
1.2 切割功能
String strs[] = str.split(regex);
需求1:根据空格对一段字符串进行切割。
public static void splitDemo(){
String str = "aa.bb.cc";
str = "-1 99 4 23";
String[] arr = str.split(" +");
for(String s : arr){
System.out.println(s);
}
}
需求2 :根据重叠词进行切割。
public static void splitDemo2(){
String str = "sdqqfgkkkhjppppkl";
String[] arr = str.split("(.)\\1+");
for(String s : arr){
System.out.println(s);
}
}
1.3 替换功能
String s = str.replaceAll(regex);
需求:把字符串中的重叠字替换成单个单词。
public static void replaceDemo(){
String str = "sdaaafghcccjkqqqqqql";
String s = str.replaceAll("(.)\\1+","$1");//$ 可以获取到该方法中正则实际参数中的某一个存在的组 $组编号即可。
System.out.println(str+":"+s);
String nums = "wser127372tyuiopd6226178909876789fghjk";
String s1 = nums.replaceAll("\\d+","*");
System.out.println(nums+":"+s1);
}
2.使用JDK正则类(java.util.regex)
正则对象Pattern 和匹配器Matcher。
String data = "hou tian you ke yi fang jia";
String reg = "\\b[a-z]{3}\\b";
//第一步:先要把字符串的正则编译成Pattern对象
Pattern p = Pattern.compile(reg);
//第二步: 使用正则对象去匹配字符串,得到一个matcher 对象。
Matcher m = p.matcher(data);
while(m.find()){
//m.group(),m.group(0)代表捕获整个内容
//m.group(1)捕获第一组
System.out.println(m.group());//捕获
}