java正则表达式

来源:互联网 发布:欧美经典犯罪电影知乎 编辑:程序博客网 时间:2024/06/04 18:02

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,}");

上面第一种把每个字符单独的匹配了,所以它匹配了第一个字符而不是整个字符串,所以不对。

原创粉丝点击