日期:2014-05-20  浏览次数:20650 次

关于正则表达式匹配的问题,想问问大家
最近在学Java,刚看到Java中的正则表达式,然后看到书中的一个例子不是太了解,想请教一下大家,先上代码吧!

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindGroup {
private static int count;
public static void main(String[] args){
Matcher m = Pattern.compile("\\w+").matcher("Java isn't easy!");
                //Matcher m = Pattern.compile("\\w+").matcher("Java is very easy!");
while(m.find()){
count++;
System.out.println(m.group());
}
System.out.println(count);
}
}

该程序的打印结果是:
Java
isn
t
easy
4
我注释掉的那一句打印结果是:
Java
is
not
easy
4
问题就是我并不太明白为什么会输出这样的结果,首先我认为\w是匹配单个字符或者数字和下划线的,由于后面还有一个+号,所以可以匹配多个字符或者数字,当遇到第一个空格的时候就该停止匹配了,所以应该输出Java,但是后来看了一下发现\w书上的解释是匹配单词的,那么我想问如何匹配单词,匹配单词的时候空格没有影响吗,遇到什么才会停止匹配呢?

希望知道的回答一下,先谢谢了。
正则表达式 java 单词匹配

------解决方案--------------------
\w 单词字符:[a-zA-Z_0-9] 
遇到空格就会断开
isn't  '不会匹配\w
Java is very easy!  那来的not?