正则表达式只适用于字符串
匹配matches
实际使用的是String类中定义的方法boolean matches(String regex)
public static void piPei( ){
String regex="[1][356789]\\d{9}";
boolean boo="14838384388".matches(regex);
System.out.println(boo);
}
验证qq号是否合法:5-15, 不能以0开头,必须全是数字
class Demo5
{
public static void main(String[] args)
{
//String regex="[1-9][0-9]{4,14}";//正则表达式
String regex="[1-9]\\d{4,14}";//正则表达式
String qq="123456478";
System.out.println(qq.matches(regex));
System.out.println(checkQQ("sqd123456"));
}
public static boolean checkQQ(String qq){
int l=qq.length();
if (l>=5&&l<=15){
if(!qq.startsWith("0")){
try{
long num=Long.parseLong(qq);
return true;
}catch (NumberFormatException e){
System.out.println("qq号必须全为数字!");
}
}
else System.out.println("不能以0开头!");
}
else System.out.println("长度不合法!");
return false;
}
}
切割
实际使用的是String类中定义的方法 String[] split(String regex) ,根据字符串中符合正则规则的字符串进行切割
public static void qieGe(){
String str1="zhangsan,lisi,wangwu,zhaoliu";
String regex1=",";
String str2="zhangsan lisi wangwu zhaoliu";
String regex2=" +";
String str3="zhangsan,lisi,wangwu,zhaoliu";
String regex3="\\.";
String str4="zhangsan$$$$$lisi*******wangwu###zhaoliu";
String regex4="(.)\\1+";//重复字符切
//从左往右,第一对小括号就是第一组,第二对小括号就是第二组
String[] arr = str0.split(regex0);
for(String ss:arr){
System.out.println(ss);
}
}
替换
实际使用的是String类中定义的方法 String replaceAll(String regex, String replacement) ,把字符串中符合正则规则的内容替换为第二个参数接收的字符串
public static void tiHuan(){
String str1="zhangsan$$$$$lisi*******wangwu###zhaoliu";
str1=str1.replaceAll("(.)\\1+","$1")
//$1 表示取第一组的值
String str2="owieurioeu13623456666iwoeu18663333sdf01012345";
str2=str2.replaceAll("(\\d){6,}","****");
//owieurioeu****iwoeu****sdf****
String str3="13555486684";
str3=str3.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
System.out.println(str0);
}
获取
使用Pattern和Matcher实现
-
定义获取的内容符合的正则规则
-
把正则表达式编译为Pattern类型的对象
-
使用pattern类型的对象,获取Matcher对象,
Matcher对象具备从字符串中获取我们能需要的内容的功能
-
使用Matcher对象获取内容 boolean find() 一次找一个
import java.util.regex.*;
class Demo{
public static void main(String[] args) {
String str="zhu yi le, sdhi shi shw weada sdsd";
String regex="[a-z]{4}";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while (m.find()){
System.out.println(m.group());
}
}
}
练习
String str="我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程";
str=str.replaceAll("\\.+","");
System.out.println(str);
str=str.replaceAll("(.)\\1+","$1");
System.out.println(str);
String str="192.168.1.200 10.10.10.10 4.4.4.4 127.0.0.1";
str=str.replaceAll("(\\d{1,3})","00$1");
System.out.println(str);
str=str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
String[] arr=str.split(" +");
Arrays.sort(arr);
for (String ss:arr){
System.out.print(ss.replaceAll("0*(\\d{1,3})","$1")+" ");
}