java正则表达式:
(一) 基本应用
Pattern pattern=Pattern.compile("[A-Z][a-z]{2,}");
Matcher m = pattern.matcher("aaa EnWglish aab We TTe");
while(m.find()){
System.out.println(m.group());
}
[A-Z][a-z]{2,}表示以一个大写字母开头,后面跟至少两个小写字母。{2,}是贪婪模式的写法,不过我觉得只要不用.这种通配符,贪婪与非贪婪没啥区别。
而[[A-Z][a-z]]{2,},可不是表示一个大写一个小写至少两对,它与[A-Za-z]{2,}一样表示任意字母至少两个
而([A-Z][a-z]){2,}才是。
(二) String match应用
在java doc中关于Pattern:
| |
\p{Lower} | A lower-case alphabetic character: [a-z] |
\p{Upper} | An upper-case alphabetic character:[A-Z] |
\p{ASCII} | All ASCII:[\x00-\x7F] |
@Test
public void regularLearn(){
String text="tergf ,.sts";
boolean re=text.matches("\\p{ASCII}");
System.out.println("stringregular match:"+re);
}
按说这样写只要全是英文字母或标点就应返回true,可不是。最终我用Pattern和Matcher类试了试,发现要这样写才可以。
boolean re=text.matches("\\p{ASCII}{1,}");
上面第一种把每个字符单独的匹配了,所以它匹配了第一个字符而不是整个字符串,所以不对。