正则表达式

正则表达式:.匹配字符串.

String regex = "\s+(\w+)\s+(\d+)\s+.+";//分组匹配
		String str = " 100000000001 13357725855                 Aug 17 2014  7:55PM 综治e通组合-2014        ";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		System.out.println("length:" + str.length());
		System.out.println(m.matches());
//		System.out.println(m.find());
		System.out.println(m.group());
		System.out.println("start:" + m.start());
		System.out.println("end:" + m.end());

Matcher类:

matches()方法:尝试将整个区域与模式匹配(API)

  即使用正则表达式匹配整个字符串。如果匹配成功可以

  start()获取匹配到字符串的开始索引

  end()方法获取匹配到字符串结束索引

  group()方法获取匹配到的字符串

因为matches()方法是对整个字符串匹配,因此start索引为0,end索引为length-1,group则是整个字符串

find()方法:尝试查找与该模式匹配的输入序列的下一个子序列(API)

  此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。 

  find方法是从整个字符串索引0开始,查找与正则表达式匹配的子字符串。

总结:

group()方法返回上次匹配到的字符串,因此没有调用matches()方法或是find()方法会报异常。

上述实例:

匹配时字符串时,类似游标在字符串上移动。调用matches或是find后,如有匹配到的结果,游标移动到匹配到字符串的结尾

regex完全匹配字符串str,调用find()和matches()都是匹配检测,匹配完整字符串。

调用matches返回true,再调用find方法返回false,因为游标已经移动到字符串结尾

开发建议:

正则表达式完全匹配字符串

正则表达式使用分组

使用matches()方法检测

原文地址:https://www.cnblogs.com/lh-V/p/4126392.html