Java正则表达式探究(Pattern/Matcher)

Java正则表达式有两个工具类:Pattern和Matcher。Pattern是用来编译正则表达式的匹配字符串。Matcher进行匹配。Matcher有两个比较有用的方法。matcher和find。这两个方法有一定的区别。matcher是匹配整个字符串。而find则是查到当前字符串中的匹配字串。

代码如下:

Pattern pa = Pattern.compile("http://www.meituan.com/deal/[0-9]*.html", Pattern.DOTALL);
		Matcher ma1 = pa.matcher("http://www.meituan.com/deal/26174473.html\" class=\"w-link\"");
		System.out.println(ma1.matches());
这个匹配是不成功的。打印值为false。如果要匹配成功,模式匹配串需要改成:

http://www.meituan.com/deal/[0-9]*.html\" class=\"w-link\"
当我们使用find匹配字串的时候可以用来截取字符串:

Pattern pa = Pattern.compile("(http://www.meituan.com/deal/([0-9]*).html)", Pattern.DOTALL);
		Matcher ma1 = pa.matcher("http://www.meituan.com/deal/26174473.html\" class=\"w-link\"");
//		System.out.println(ma1.matches());
		while (ma1.find()) {
			System.out.println(ma1.group(1));
			System.out.println(ma1.group(2));
		}
结果是:

http://www.meituan.com/deal/26174473.html
26174473
这里的组别是从外带内,从左到右进行排序的。

例2:

String str = "Hello,World! in Java.";
		Pattern pattern = Pattern.compile("W(or)(ld!)");
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			System.out.println("Group 0:" + matcher.group(0));// 得到第0组——整个匹配
			System.out.println("Group 1:" + matcher.group(1));// 得到第一组匹配——与(or)匹配的
			System.out.println("Group 2:" + matcher.group(2));// 得到第二组匹配——与(ld!)匹配的,组也就是子表达式
			System.out.println("Start 0:" + matcher.start(0) + " End 0:"
					+ matcher.end(0));// 总匹配的索引
			System.out.println("Start 1:" + matcher.start(1) + " End 1:"
					+ matcher.end(1));// 第一组匹配的索引
			System.out.println("Start 2:" + matcher.start(2) + " End 2:"
					+ matcher.end(2));// 第二组匹配的索引
			System.out.println(str.substring(matcher.start(0), matcher.end(1)));// 从总匹配开始索引到第1组匹配的结束索引之间子串——Wor
		}

结果是:

Group 0:World!
Group 1:or
Group 2:ld!
Start 0:6 End 0:12
Start 1:7 End 1:9
Start 2:9 End 2:12
Wor



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值