正则表达式(初步了解)
正则表达式:regex
字符集:
1、[]:表示括号内的内容任意一个都符合。如[0124]:0,1,2,4都对,[0-4]:0,1,2,3,4
[0-9,a-z,A-z-]:表示0-9,a-z,A-Z,","-";"-"放在末尾不在表示范围
2、{}:表示出现的次数。如:{2}:花括号前的字符出现的次数为至少2次;{0,2}:0,1,2次;{3,}:3,...到无穷次
3、():最高优先级,表示括号内的内容是个整体
预定义符:
\d:表示0-9的任意一个数字[0-9]
\D:表示除了数字之外[^0-9]
\w:表示数字字母_[0-9a-zA-Z_]
\W:表示除了数字字母_之外[^0-9a-zA-Z_]
\s:表示空格[]
\S: 表示除了空格之外[^ ]
.: 表示任意字符
\.:表示点号
?:{0,1}可出现或不可出现,只能出现一次
+:{1,}表示1到无穷
*:{0,}
\:表示转义字符
?!:表示不能以什么(!后面的字符)开头
(?!.*?_$)或(?<!\\_):表示不能以_结尾
$: 为结束符
^:开始符(可省略)
(?=.*[0-9])(?=.*[a-zA-Z])[0-9a-zA-z]{6,12}:必须包含一个字母和一个数字的6-12位密码
java对正则表达式的支持
1、Pattern
2、Matcher
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* java对正则表达式的支持
*/
public class Test01 {
public static void main(String[] args) {
// method01();
method02();
}
/**
* 验证格式是否正确
*/
public static void method01(){
String mobile="1345894567";
String regex="^1[3-9]\\d{9}$";
Pattern p=Pattern.compile(regex);//验证字符串的正则表达式
Matcher m=p.matcher(mobile);//去匹配
boolean flag=m.matches();//匹配结果
System.out.println(flag?"成功":"失败");
}
/**
* 匹配符合的内容有哪些
*/
public static void method02(){
//找出里面所有的数字,且在字符串的哪些位置
String str="455fs87126sdg4s65d74d6ssd54g8s7sf5a";
String regex="\\d+";
Pattern p=Pattern.compile(regex);
Matcher m= p.matcher(str);
while (m.find()){
System.out.println("匹配的:"+m.group()+",在字符串的下标值:"+m.start()+"-"+(m.end()-1));
}
}
}
String对正则表达式的支持
1、matchers
2、replaceAll,replacefirst
3、split
import java.util.Arrays;
/**
* 字符串对正则表达式的支持
*/
public class Test02 {
public static void main(String[] args) {
String str="465564568@qq.com";
String regex="\\d{6,11}@qq.com";
//match()去匹配
boolean flag =str.matches(regex);
System.out.println("匹配的:"+(flag?"成功":"失败"));
//精确替换 replace
str="hfahkuwsf5454f4a5f4";
str= str.replace("5","abc");
//匹配替换 repalceAll replacefirst
String reg2="[a-zA-Z]+";
str=str.replaceAll(reg2,",");
System.out.println("替换后:"+str);
//分割split
str="hfahkuwsf5454f4a5f4";
String reg3="[0-9]+";
String[] arr=str.split(reg3);
System.out.println("分割后:"+ Arrays.toString(arr));
}
}