您的位置:首页 > 编程语言 > Java开发

java正则表达式中 matcher.find()和 matcher.matches()的区别 .

2013-12-31 10:37 435 查看
find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。

matches

public static boolean matches(String regex,  CharSequence input)

编译给定正则表达式并尝试将给定输入与其匹配。 

调用此便捷方法的形式 

Pattern.matches(regex, input);

Pattern.compile(regex).matcher(input).matches() ;

如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。

参数:

regex - 要编译的表达式

input - 要匹配的字符序列 

抛出: 

PatternSyntaxException - 如果表达式的语法无效

find

public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。 

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

如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。  

matcher.start() 返回匹配到的子字符串在字符串中的索引位置.

matcher.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.

matcher.group()返回匹配到的子字符串

返回:

当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。

 

所以find 一次可以找到一个匹配的值,可以继续find 找到所有匹配的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: