JAVA中的正则表达式

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);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值