11.正则表达式

1.概述:

          正则表达式通过一些特定符号表示,用于操作字符串数据。


2.常见规则:

字符类
[abc]abc(简单类)
[^abc]任何字符,除了 abc(否定)
[a-zA-Z]azAZ,两头的字母包括在内(范围)
[a-d[m-p]]admp[a-dm-p](并集)
[a-z&&[def]]def(交集)
[a-z&&[^bc]]az,除了 bc[ad-z](减去)
[a-z&&[^m-p]]az,而非 mp[a-lq-z](减去)

预定义字符类
.任何字符(与行结束符可能匹配也可能不匹配)
\d数字:[0-9]
\D非数字: [^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]

边界匹配器
^行的开头
$行的结尾
\b单词边界
\B非单词边界
\A输入的开头
\G上一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符(如果有的话)
\z输入的结尾

Greedy 数量词
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n
X{n,}X,至少 n
X{n,m}X,至少 n 次,但是不超过 m

3.常见功能:

 代码示例:   

		String qq = "01234567";
		// 特殊符号定义正则表达式
		String regex = "[1-9][0-9]{4,14}";

		// 1.匹配 public boolean matches(String regex); 告知此字符串是否匹配给定的正则表达式。
		boolean b = qq.matches(regex);
		System.out.println(qq + ":" + b);

		String str = "zhangsan.lisi.wangwu";
		// 2.切割 public String[] split(String regex,int limit);
		// 根据匹配给定的正则表达式来拆分此字符串。
		String[] names = str.split("\\.");
		for (String name : names) {
			System.out.println(name);
		}

		// 3.替换 String replaceAll(String regex, String replacement); 使用给定的
		// replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
		String str1 = "zhangsanttttxiaoqiangmmmmmmmzhaoliu";
		str1 = str1.replaceAll("(.)\\1+", "#");
		System.out.println(str1);

		// 4.获取 指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,
		// 依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
		// 因此,典型的调用顺序是
		// 将正则规则进行对象的分装
		Pattern p = Pattern.compile("a*b");
		// 通过正则对象的matcher方法字符串相关联,获取要对字符串操作的匹配器对象Matcher
		Matcher m = p.matcher("aaaaab");
		// 通过Matcher匹配器对象的方法对字符串进行操作
		boolean b1 = m.matches();

		// 例
		String str2 = "da jia hao,ming tian bu fang jia!";
		String regex2 = "\\b[a-z]{3}\\b";

		// 1.将正则封装成对象
		Pattern p1 = Pattern.compile(regex2);
		// 2.通过正则对象获取匹配器对象
		Matcher m1 = p1.matcher(str2);

		// 使用Matcher对象的方法对字符串进行操作
		// 既然要获取三个字母组成的单词
		// 查找 find();
		while (m1.find()) {
			// 获取匹配的子序列
			System.out.println(m1.group());
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值