正则表达式

认识正则表达式

正则表达式主要用于在字符串的验证等方面,简化验证操作,比如下面的程序要验证遗传字符串是否全部由数字组成:

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "123" ;
		if (isNumber(str)) {
			int num = Integer.parseInt(str) ;//如果是字符串全由数字构成就转为int类型
			System.out.println(num * 2);
		}
	}
	public static boolean isNumber(String str) {
		char data [] = str. toCharArray() ;
		for(int x=0;x<data.length;x++){
			if (data[x] > '9'|| data[x] < 'θ') {
				return false ;
			}
		}
		return true ;
	}
}

而如果同样的功能,使用正则表达式就可以简化操作

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "123" ;
		if (str.matches("\\d+") {//使用正则表达式,判断str这个字符串是否全是由数字构成
			int num = Integer.parseInt(str) ;//如果是字符串全由数字构成就转为int类型
			System.out.println(num * 2);
		}
	}

正则标记

https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html

  1. 【数量:单个】字符匹配
  • 任意字符:表示由任意字符组成;
  • \\:匹配“\”;
  • \n:匹配换行;
  • \t:匹配制表符;
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "a" ;
		String str2 = "a";
		System.out.println(str.matches(str2));//返回ture
		}
	}
}
  1. 【数量:单个】字符集(可以从里面任选一个字符)
  • “[ abc ]”: 表示可能是字母a、b、c中的任意一个;
  • “[ abc]” :表示不是由字母a、b、c中的任意一个;
  • “[a-zA-Z]” :表示由一个任意字母所组成,不区分大小写;
  • " [0-9]":表示由一位数字所组成;
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "a" ;
		String str2 = "[a-zA-Z]";//表示属于任何一个字母,不区分大小写
		System.out.println(str.matches(str2));//返回ture
		}
	}
}
  1. 【数量:单个】简化字符集
  • . : 表示任意的一一个字符;
  • \d :等价于“[0-9]”范围;
  • D :等价于“ [^0-9] ”范围;
  • \s : 匹配任意的一位空格,可能是空格、换行、制表符;
  • \S :匹配任意的非空格数据:
  • \w : 匹配字母、数字、下划线,等价于“[a-zA-Z 0-9]”;
  • \W : 匹配非字母、数字、下划线,等价于“[^a-zA-Z_ 0-9]";
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "a" ;
		String str2 = "\\w";//表示属于任何一个字母,不区分大小写
		System.out.println(str.matches(str2));//返回ture
		}
	}
}
  1. 数量表示,默认情况下只有添加上了数量单位才可以匹配多位字符
  • 表达式? : 该正则可以出现0次或1次;
  • 表达式* : 该正则可以出现0次、1次或多次;
  • 表达式+ : 该正则可以出现1次或多次;
  • 表达式{n}:表达式的长度正好为n次;
  • 表达式{n}:表达式的长度为n次以上;
  • 表达式{n,m}:表达式的长度在n~m次;
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "asdfg" ;
		String str2 = "\\w{1,}";//验证,1次以上正则
		System.out.println(str.matches(str2));//返回ture
		}
	}
}

String类对正则表达式的支持

正则表达式也可以进行复杂字符串的修改处理。

方法名称类型描述
public boolean matches(String regex)普通将指定字符串进行正则判断
public String replaceAll(String regex, String)普通替换全部
public String replaceFirst(String regex, String)普通替换首个
public String[] split(String regex)普通正则拆分
public String[] split(String regex, int limit)普通正则拆分
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		String str = "JILO&*()@#$UISD&*(#$HUK34rwyhui*()@#$*()@#$" ;//要替换的字符串
		String regex = "[^a-zA-Z]+" ;//正则表达式,判断所有非字母的数据
		System. out . print1n(str . replaceAll(regex, ""));//替换掉字符串中所有的非字母
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值