好久没用博客了 一直在用笔记 无聊的时候吧自己的笔记弄得不错的整理好发到网上 贡献点 应该是好的 这是之前自己整理的java正则表达式的学习方法 从笔记上copy下来的 自我感觉良好
做实验要用 之前只是听说过正则表达式 完全没用过通过百度(虽然谷歌更学术文档更权威 但是百度的中文文档更多 所以再次提醒自己学英语)
准备:
①首先有一篇30分钟学会正则表达式反正百度出来都有这篇 并且比较靠前 这篇文章被转了很多次而且写得还算清楚
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
这种文章经常过期。。。不过百度30分钟学会正则表达式应该可以得到最新的可看的版本 真的很经典
②然后就是开源中国的中文api文档
那个JDK中文版的是1.6 没办法 英语差 只能这么看 虽然有的时候翻译的各种蛋疼 但是大概意思还是能懂得
http://www.ostools.net/regex
http://www.ostools.net/apidocs/apidoc?api=jdk-zh
③这个网站真的很好用各种文档和工具除了文档还提供一些工具 比如正则表达式测试工具 我觉得正则可以先用这个工具进行测试在改成java的模式
工具准备完了 剩下的任务就是开始看文档 做测试
正式开始:
java在1.4之后开始添加正则表达式的使用 一共分为三个类 一个接口
package:java.util.regex.*;
java中正则表达式的使用过程:
①使用Pattern来编译正则表达式,然后使用match类来使用
②使用String类里面的一些方法可以跳过正则编译 直接使用 这类方法有split (按照某个正则做分隔符进行分割) match方法 是否匹配某个正则 replace和replaceall 按照正则替换(all表示全部)
Pattern类 提供了正则表达式的编译的类,这个类里面有一个静态方法可以用来当构造方法 并且很多情况下都这么用
Pattern pat=Pattern.complie("test regex");
当然compile中的参数也可以指定也可以指定编译模式 比如忽略大小写 用行作为正则的单位等等 Pattern类里面都有固定的常量表示这些参数
Matcher类 用于匹配字符串
Matcher mat=pat.matcher(test String); 用某个正则表达式对象来产生匹配
关于""
java中是转义字符 但是正则里面也是转义字符 因此在java正则中用\代替正则的
关于group
可以在正则中使用()对其进行分组 整个字符串对应组0 从左向右每个字符串对应组1 组2 组3 在matcher中可以用组提取字符串 但是有一个很重要的前提是 必须要先执行find之后并成功之后才能用group 直接用group会出bug 某次实验就在这卡了好久才发现 好好的记录一下
例如
regex="(h*)t";
data="hhhhht";
pat=Pattern.compile(regex);
match=pat.matcher(data);
if(match.find())
{
//此时可以用了 下面这句话可以输出hhhhh
System.out.println(match.group(1));
}