正确理解java正则表达式中Matcher类中matches方法和find方法的区别:
以前一直对matches方法理解为只要有匹配的子串就返回true,而find的含义则一直不怎么清楚,详细百度了一下matches方法,可以说是后知后觉了,呵呵。
1、matches匹配的是整个匹配串,如果整个串满足pattern的正则表达式则返回true,反之返回false。
2、find方法只要有子串满足pattern的正则表达式,则返回true,如果没有任何匹配项则返回false。
下面附上几个matches和find的用法
(1)替换包含正则表达式的子串
执行结果:
[table]
|java is J20 s J20|
[/table]
(2)获取满足正则表达式的子串
注:需要获取的子串需要用群组的表达式,即“(子串)”
执行结果:
[table]
|javabean|
|javaaean|
[/table]
(3)校验字符串是否满足正则表达式
执行结果:
[table]
|true|
[/table]
以前一直对matches方法理解为只要有匹配的子串就返回true,而find的含义则一直不怎么清楚,详细百度了一下matches方法,可以说是后知后觉了,呵呵。
1、matches匹配的是整个匹配串,如果整个串满足pattern的正则表达式则返回true,反之返回false。
2、find方法只要有子串满足pattern的正则表达式,则返回true,如果没有任何匹配项则返回false。
下面附上几个matches和find的用法
(1)替换包含正则表达式的子串
Pattern pattern = Pattern.compile("(java[ab]ean)");
Matcher matcher = pattern.matcher("java is javabean s javaaean");
System.out.println(matcher.replaceAll("J20"));
执行结果:
[table]
|java is J20 s J20|
[/table]
(2)获取满足正则表达式的子串
注:需要获取的子串需要用群组的表达式,即“(子串)”
Pattern pattern = Pattern.compile("(java[ab]ean)");
Matcher matcher = pattern.matcher("java is javabean s javaaean");
while(matcher.find()) {
System.out.println(matcher.group());
}
执行结果:
[table]
|javabean|
|javaaean|
[/table]
(3)校验字符串是否满足正则表达式
Pattern pattern = Pattern.compile("[\\w\\s]*");
Matcher matcher = pattern.matcher("java is javabean s javaaean");
System.out.println(matcher.matches());
执行结果:
[table]
|true|
[/table]