一、特点
1.符合一定的规则的表达式。
2.作用:用于专门操作字符串。
特点:用一些特定的符号来表示一些代码操作,这样简化书写。
3.具体操作功能:
1) 匹配:String matches方法。
字符类:
- [abc]:表示相应字符位必须是a或b或c;
public class Test01 {
public static void main(String[] args) {
demo();
}
public static void demo(){
String str = "a";
String reg = "[bcd]";//第一个字符必须是b或c或d。
System.out.println(str.matches(reg));
}
}
}
//结果:false
- [a-zA-Z]:必须是字母:
注:位数
预定义字符: - \d:注意,用是写成\d,第一个\是转义
String str = "a8";
String reg = "[a-zA-Z]\\d";//只能校验两位数,代替了上面的[0-9]
System.out.println(str.matches(reg));
- \w:单词字母(邮箱常用)
数量词: - X? ,X+,X{n},X{n,},m}
**2)切割**String split();
正则表达式:
弊端:符号定义越多,正则越长,阅读性越差。
**3)替换:**replaceAll()
public class Test01 {
public static void main(String[] args) {
replaceDemon("123456kuuusk1234op","\\d{5,}","#"); //将数字超过5个的替换成#
replaceDemon("ghhhdsk55dj","(.)\\1+","&"); //把叠词替换成&
replaceDemon("yyyyyjdhs77777","(.\\1+)","$1");//$表示获取第几个组。功能将重叠的字符替换成单个字母。
}
public static void replaceDemon(String str,String reg,String newStr){
str = str.replaceAll(reg,newStr);
System.out.println(str);
}
}
/* 结果: #kuuusk1234op g&dsk&dj yyyyyjdhs77777 */
4)获取:
将字符串中符合规则的子串取出
操作步骤:
1)将正则表达式封装成对象
2)让正则对象和要操作的字符串相关联
3)关联后,获取正则匹配引擎
4)通过引擎对符合规则的子串进行操作,比如取出。
注:导包import java.util.regex.*;
public class Test01 {
public static void main(String[] args) {
getDemon();
}
public static void getDemon(){
String str = "mng dksja ks dks sdjf djf";
String reg = "\\b[a-z]{3}\\b"; // \b单词边界
//将规则封装成对象
Pattern p = Pattern.compile(reg);
//让正则对象和要做用的字符串相关联,获取匹配器对象,
Matcher m = p.matcher(str);
System.out.println(m.matches());
while(m.find())//返回boolean类型,先find才能group取出
{
System.out.println(m.group());//group是获取匹配后的结果,所以应该先find
}
}
}