JAVA中的正则表达式
一.Object(顶级父类)
1.所有的类都有一个类叫做object,默认的父类是java.lang.Object,object的引用类型变量可指向任何对象(向上造型)。
2.object常见方法:tostring()返回一个string类型,该方法意义是当前对象转化为一个字符串;object以实现了该方法,返回的字符串是当前对象的句柄(引用)格式为:包名.类名 @散列码。
3.该字符在实际开发中意义不大,所以通常使用这个方法时需要进行重写。tostring()方法是非常有用的调试工具(一般返回的是类中的成员变量),强烈建议自定义的对象都要重写tostring()方法。
自定义的Person类重写了Object中的toString()方法
public class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//重写父类objct中的tostring()方法
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
}
自定义DemoObject类:
public class Demoobject {
public static void main(String[] args) {
Person p=new Person();
p.setAge(56);
p.setName("kakak");
System.out.println(p.toString());
//System.out.println(p);//直接调用tostring()方法,这里可以省略
}
}
二.正则表达式
1.正则表达式简介:
实际开发中,经常需要需要对字符串数据进行一些复杂的匹配,查找,替换等操作,通过正则表达式,可以方便的实现字符串的复杂操作。
2.什么是正则表达式?
- 1.正则表达式本来就是一个字符串
- 2.正则表达式用于检索目标字符串中的规则,
- 3.正则表达式是规定字符串是否合理
- 4.正则需要解析器来执行,java提供了相关的解析器处理API
- 5.常见的编程语言大部分都支持提供正则API。
3.如何使用正则表达式?
matchers(正则表达式)方法:将一个字符串与正则表达式进行匹配,如果匹配成功返回true,否则返回false;
1.字符集合:
2.预定义字符集:
代码执行:
public class DemoReg {
public static void main(String[] args) {
String regex1="[a-z]";
//判断正则表达式的方法是matches();
System.out.println("b".matches(regex1));//b字符是否满足正则regex1的条件
String regex2="[^a-z]";
String regex3="[a-z&&[^bc]]";
String regex4="[a-zA-Z0-9]";
System.out.println("a".matches(regex2));//false
System.out.println("c".matches(regex3));//false
System.out.println("bc".matches(regex4));//false
//"\"转义字符
String regex5="\\d";//[0-9]
String regex6="\\D";//[^0-9]
String regex7="\\s";//[\t]
String regex8="\\S";//[^\t]
String regex9="\\w";//[a-zA-z0-9_]
String regex10="\\W";//[^a-zA-Z0-9_]
System.out.println("8".matches(regex5));//true
System.out.println("2".matches(regex6));//false
System.out.println(" ".matches(regex7));//true
System.out.println("".matches(regex8));//false
System.out.println("_".matches(regex9));//true
System.out.println("-".matches(regex10));//true
String regex11=".";//任意字符
System.out.println("a".matches(regex11));//true
String regex12="\\.";//.字符
System.out.println("a".matches(regex12));//false
}
}
3.数量词:
代码演示:
public class DemoReg2 {
public static void main(String[] args) {
//验证邮政编码
String reg="[0-9][0-9][0-9][0-9][0-9][0-9]";
String reg1="\\d\\d\\d\\d\\d\\d";
String reg3="\\d{6}";
System.out.println("456789".matches(reg3));//t
String reg4="[a-z]*";
String reg5="\\w+\\.pom";
String reg6="\\d?[a-z]*";
System.out.println("sdasda".matches(reg4));//t
System.out.println("".matches(reg4));//t
System.out.println("shd.pom".matches(reg5));//t
System.out.println(".pom".matches(reg5));//f
System.out.println("dasfa".matches(reg6));//t
String reg7="\\w{5}";
String reg8="\\w{5,}";
String reg9="\\w{5,10}";
String reg10="[a-zA-Z0-9]{4,8}";
System.out.println("sasd".matches(reg7));//f
System.out.println("sdnadjafj".matches(reg8));//t
System.out.println("dkkddoo".matches(reg9));//t
System.out.println("sdaji-ns".matches(reg10));//f
}
}
实现手机号匹配和邮箱的匹配:
public class DemoReg3 {
public static void main(String[] args) {
//匹配手机号(十一位)
//(+86或+0086)? 15648445196
/*
* “|”表示“或”的关系
*
*
* "^" 表示字符串开始
* "$" 代表字符串结束
*/
String phonereg="^(\\+86|\\+0086)?\\s*\\d{11}$";
System.out.println("+86 12345678911".matches(phonereg));
//邮箱
String email="kunkun12345678912@qq869.com";
String emailreg="^\\w{4,18}@[a-z0-9]+\\.[a-z]{2,4}$";
if(email.matches(emailreg)){
System.out.println("通过");
}else{
System.out.println("no");
}
}
}
3.split()字符分割方法
split() :String 类提供给我们的分割字符方法返回一个字符串数组
对字符串按照”,“进行分割,返回数组:
代码演示:
public class DemoSplit {
public static void main(String[] args) {
String str="你对接哈加纳的啦,是否会,大大,大丰富,而放弃我。";
String[] arrstr=str.split(",");
for(int i=0;i<arrstr.length;i++){
System.out.println(arrstr[i]);
}
}
}
按照一个或者多个空格分割字符串;
代码演示:
public class DemoReg5 {
public static void main(String[] args) {
String str3="java c++ c python";
String[] arr3=str3.split("\\s+");
System.out.println(Arrays.toString(arr3));
System.out.println(arr3[3]);
}
}
4.replace与replaceAll的使用
string提供了用于字符串替换方法,
- replaceAll:将字符串中匹配正则表达式regex的字符串全部替换成str
- replace:替换部分内容
public class DemoReplaceAll {
public static void main(String[] args) {
//replace:替换部分内容
String str="232sakak5666jdkja8888";
//将字符串str的“5666”,替换成么么么
str=str.replace("5666", "么么么");
System.out.println(str);
//将str中的所有数字字符串该为么么么
str=str.replaceAll("\\d+", "么么么");
System.out.println(str);
}
}
e:替换部分内容
String str="232sakak5666jdkja8888";
//将字符串str的“5666”,替换成么么么
str=str.replace("5666", "么么么");
System.out.println(str);
//将str中的所有数字字符串该为么么么
str=str.replaceAll("\\d+", "么么么");
System.out.println(str);
}
}