正则表达式

来源:互联网 发布:三国大时代3无需网络破 编辑:程序博客网 时间:2024/05/19 12:28

黑马程序员_正则表达式


----------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------

 

正则表达式,即符合一定规则的表达式,用于专门操作字符串。Java在J2SE1.4之后开始支持正则表达式,您可以在API文件的java.util.regex.Pattern类中找到支持的正则表达式相关信息。可以将正则表达式用于字符串的对比、取代、分离等动作。

 

正则表达式中一般有四种操作:

1.匹配 String matches方法

2.切割

3.替换replace,replaceAll复杂,里面包含正则表达式

4.获取

 

字符对比符号:

.      符合任一字符

\d 符合0----9任一个数字字符

\D 符合0----9以外的字符

\s 符合\t,\n,\x08,\f,\r等空格符

\w 数字或字符都符合

\W 除数字与字母外都符合

 

切割范例:

public class Regular{

public static void main(String []args){

//定义字符串text

String text=”abcdebcadxbc”;

//使用split()方法对字符串text进行切割

String []arr=text.split(“.bc”);

//运用for循环进行遍历

for(String ss:arr)

{

System.out.print(ss+” ”);

}

System.out.println();

//再次进行切割

arr=text.split(“..cd”);

//for循环遍历

for(String ss:arr)

{

System.out.print(ss+” ”);

}

}

}

结果:

d ad

Ebcadxbc

 

字符类范例

[abc] 符合a/b/c

[^abc] 符合a/b/c之外的字符

[a-zA-Z] 符合a-z或A-Z的字符

[a-d[m-p]] 符合a-d或者m-p

 

 

matches实例:

public class test5 {

public static void main(String[]args)

{

Demo();

}

public static void Demo()

{

//定义字符串qq

String qq="18771097257";

//定义规则reg

String reg="[1-9][358]\\d+";

//进行匹配

System.out.print(qq.matches(reg));

}

}

结果:true

 

贪婪量词范例

X? X出现一次或完全没有

X* X出现0次或多次

X+ X出现一次或多多次

X{n} X出现n次

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

X{n,m} X至少出现n次,最多出现m次

当字符串中出现叠词,可表示为(.)\\1,即将要重复的词封装为一组,用括号括起


替换示例:

public class test4 {

public static void main(String[]args)

{

Demo();

}

public static void Demo()

{

//定义字符串qq

String qq="11223344aa55ff";

//定义表达式

String reg="(\\w)\\1";

//进行替换

String s=qq.replaceAll(reg, "$1");

System.out.println(s);

}

}

结果:1234a5f

 

String类中的matches方法,用的就是Pattern和Matcher对象来完成.如果想要将正则表达式视为一个对象来重复使用,可以使用Pattern的静态方法compile()进行编译。Compile()方法会返回一个Pattern的实例,这个实例代表正则表达式,之后可以重复使用Pattern实例的matcher()方法来返回一个Matcher实例。

 

实例:

import java.util.regex.*;

public class test6 {

public static void main(String[]args)

{

String phone1="0913-100581\n"+"0939-234561\n";

//将规则封装成对象

Pattern pattern=Pattern.compile(".*0939-\\d{6}");

//让正则对象和要作用的字符串相关联,获取匹配器对象

Matcher matcher=pattern.matcher(phone1);

while(matcher.find())//将规则作用到字符串中,并进行符合规则的子串查找

{

System.out.println(matcher.group());//用于获取匹配后的结果

}

String phone2="0213-456738\n"+"0939-123456\n";

matcher=pattern.matcher(phone2);

while(matcher.find())

{

System.out.print(matcher.group());

}

}

}

结果:

0939-234561

0939-123456

 

 

 

0 0
原创粉丝点击