您的位置:首页 > 其它

初识正则表达式

2013-09-24 12:10 190 查看
正则表达式:符合一定规则的表达式,用于专门操作字符串。有了正则表达式操作字符串更方便

上例中用于检查qq。只要先定义了正则表达式regex再调用matches方法判断是否符合指定规则。

正则表达式用指定的符号表达一些代码操作,学习正则表达式就是学习这些特殊符号的使用。平时也可以参考API文档。

正则表达式的操作主要有:匹配,切割,替换,获取。

匹配:调用String 的matches方法

String str = "a2az!";
String regex = "[.][\\d][\\D][\\w][\\W]";
String regex2 = "[\\d]*[a-z]+";
System.out.println(str.matches(regex));


上面包含一些比较常用的符号,最好掌握。

切割:调用String的split方法

String str ="zhangsan.lisi.wangwu";
String reg ="\\.";
String[] arr = str.split(reg);
for(String s:arr){
System.out.println(s);
}

上例中以"."为分割符,在java中写成"\\."。

按照叠词完成切割

String str ="aqqbzzzcwwwdyyyef";
String reg ="(\\w)\\1+";
String[] arr = str.split(reg);
for(String s:arr){
System.out.println(s);
}

上例的正则用到组即用括号包起来的内容,后面就可以重用到这个规则。其中1表式第一组。该正则的意思即至少包含2位单词字符。

替换:调用String的replaceAll方法

String str = "w79744w4208w";
String reg = "\\d" ;
str = str.replaceAll(reg, "#");
System.out.println(str);

 

将叠词替换成单个字母如何实现

String str = "ccc79744sss42ddd08nnn";
str = str.replaceAll("(\\D)\\1+", "$1");
System.out.println(str);


其中“$”为特殊字符,可调用前一个正则表达式中的组,1代表哪一组。

获取:

将正则表达式封装成对象
让正则对象和要操作的字符串相关联
关联后,获取正则匹配引擎
通过引擎对符合规则的子串进行操作,比如取出。
String str ="ming tian jiu yao fang jia le";
String reg ="\\b[a-z]{3}\\b";//获取3个字母组成的单词

Pattern p = Pattern.compile(reg);//将规则封装成对象
Matcher m = p.matcher(str);//让正则对象与字符串相关联,获取匹配器对象
while(m.find()){//将规则的做得到的字符串上,并进行符合规则的查找
System.out.println(m.group());//获取已匹配过的结果 调用前先m.find()
}


上例中用到了Pattern,Matcher类来获取字符。其实字符串的匹配matches方法封装的就是这两个类实现的代码,即上例中m.matches()方法,注意该方法调用后字符串的索引会移动。

Matcher的功能还有很多,有兴趣可以自己查询API学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: