黑马程序员-----正则表达式

来源:互联网 发布:centos安装snmp服务 编辑:程序博客网 时间:2024/06/06 05:28


------- android培训、java培训、期待与您交流! ----------




1  正则表达式

正则表达式:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用于一些特定的符号来表示一些代码操作。这样就简化书写,所以学习正则表达式就是学习一些特殊符号的使用。

在学习正则表达式之前,先看一个案例:

 

这是校验QQ的通常方法,但是代码过于复杂,下面是用正则表达式的方法:

 


通过上述案例,我们可以看出正则表达式的一些优缺点。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

 

1.1  匹配String str.matches(reg) 方法

String str = "a";

String reg ="[bcd]";

boolean b = str.matches(reg);

System.out.println(b);

 

1  字符类:

[abc]:a,b或c ,可以判断字符串中某个字符位上出现的字符。

[^abc]:任何字符除了a,b,c

[a-zA-Z]:a到z或A到Z

[a-z&&[^m-p]]:a到z,除了m到p

 

2  预定义字符类:

.        任何字符

\d       数字[0-9]

\D      非数字[^0-9]

\s       空白字符[\t\n\x0B\f\r]

\S       非空白字符[^\s]

\b       单词边界

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

\W      非单词字符[^\w]

 

注意:实际代码中要多加个“\”

 

3  数量词

X?       X,一次或一次也没有

X*       X,零次或多次

X+       X,一次或多次

X{n}     X,恰好n次

X{n,}    X,至少n次

X{n,m}   X,至少n次,但是不超过m次

 

案例:

 

1.2  切割:String[] str.split(reg)方法

 

String reg = ","        按照,来进行切割,不需要转义

String reg = "\\."      按照.来进行切割(转义)

String reg = "\\\\"     按照\\来进行切割(转义)

String reg = "(.)\\1"   按照叠词(两个)完成切割,1代表第一组

String reg = "(.)\\1+"  按照两个以上的叠词完成切割

 

可以将规则封装成一个组。用()完成,组的出现都有编号,从1开始,想要使用已有的组可以通过\\n来表示,n代表组的编号。

 

1.3  替换:String str.replaceAll(reg,newStr)方法

 

 

$的使用:

String str = "deqkkdwqdqqqqdesafzzzzkj" 将叠词替换成单个字符

String reg ="(.)\\1+";

String str.replaceAll(reg,"$1");  

意思是将叠词替换成第一个组的字符,$1即表示第一组的字符

 

1.4  获取:将字符串中的符合规则的子串取出



操作步骤:

1.将正则表达式封装成对象

2.让正则对象和要操作的字符串相关联

3.关联后,获取正则匹配引擎

4.通过引擎对符合规则的子串进行操作,比如取出

 

 

 



0 0
原创粉丝点击