java--正则表达式

正则表达式概念:一个字符串,一个规则

String regex ="[1-9]\\d{4,14}"

str.matches(regex)  返回值类型boolean

java.util.regex下的Pattern类


 

单个字符类

[abc] []代表单个字符,表示a或b或c字符

[^abc] 除a/b/c外的任何字符

[a-zA-Z]表示范围,两头的字母包括

[a-d[m-p]]并集

[a-z&&[def]]交集

[a-z&&[^bc]] = [ad-z]

[a-z &&[^m-p]]减去


 

预定义字符类

. 任意字符

\d =[0-9]     // \表示转义字符,如果想表示\d的话,需要\\d

\D [^0-9]非数字

\s 空白字符 [ \t\n\x0B\f\r] \ttable键水平制表符,\n换行 \r回车   匹配空格和table键的等

\S 非空白字符

\w 单词字符[a-zA-Z_0-9]

\W 非单词字符

 


数量词 Greedy

X ? X一次或一次也没有 注意:一次也没有指得是X,也不能出现其他的""

X* X零次到多次

X+ X一次到多次

X{n} X出现n次

X{n,}x出现至少n次

X{n,m}x出现n-m次

 


 

注意:split分割时,如使用.分割,需要\\.


 

replaceall 正则表达式的替换功能

String s = "wo1ai2heima";

String regex = "\\d";

String s2 = s.replaceAll(regex,"");


 

正则表达式的分组功能

1.组零代表整个表达式

2.其他按照左括号分组

String regex = "(.)\\1(.)\\2" \\1第一组出现两次 \\2第二组出现两次

String regex = "(.)\\1+" +表示第一组出现一次到多次

String s = str.replaceAll("(.)\\1+","$1")$1表示第一组中的内容

 


 

Pattern 和Matcher概述

Pattern不能被继承,其典型调用顺序为:

Pattern p = Pattern.compile(String regex);  获取正则表达式

Matcher m = p.matcher(String str) ; 获取str的匹配器

boolean b = m.matches(); 看是否能匹配,匹配就返回true

上面三步骤等于 str.matches(regex)

上面的第一种方法看似是复杂的,但是其相较于第二种方法有更加实用的场景,如获取字符串中的手机号码等。

Pattern p = Pattern.compile(String regex);  获取正则表达式

Matcher m = p.matcher(String str) ; 获取str的匹配器

boolean b = m.find(); 看是否有匹配的子串,匹配就返回true

String s1= m.group();返回上次匹配的子串

while(m.find())

      System.out.println(m.group);    获取字符串中匹配的所有子串。

 

posted on 2018-10-08 10:26  努力的鱼  阅读(109)  评论(0编辑  收藏  举报

导航