我现在需要达到一个目标,用java的正则表达式处理一片文章中的所有的和下载相关的超链接地址,要将它们分别获取并单独做处理再替换原链接地址.我的代码在一定情况下实现了这个功能.但是...
我现在需要达到一个目标, 用java的正则表达式处理一片文章中的所有的和下载相关的超链接地址, 要将它们分别获取并单独做处理再替换原链接地址. 我的代码在一定情况下实现了这个功能. 但是问题来了, 有的超链接使用双引号,有的使用单引号 ; 有的加有样式,有的没加样式,加的样式也不经相同.
什么样的表达式能够捕获这样的超链接啊, 尤其是表达式能适用单引号和双引号(引号是成对出现的).
最核心的是我想看看怎么能兼容的匹配单引号和双引号.
下边是我的代码 ,放在 main方法中可以直接跑起来 ,希望有高手能够指点,不胜感激.
String str="附件.pdf"+
"
"+"表格";
Pattern pt=Pattern.compile("(.*?)",Pattern.CASE_INSENSITIVE );
StringBuffer sb=null;
sb=new StringBuffer();
Matcher m=pt.matcher(str);
while (m.find()){
System.out.println( m.group(0));
System.out.println( m.group(1));
System.out.println( m.group(2));
System.out.println( m.group(3));
m.appendReplacement(sb, "$1"+"将连接地址做处理后进行替换"+"$3");
}
m.appendTail(sb);
System.out.println(sb.toString());
我知道正则表达式学起来比较费事, 在这里讲一下我的代码,就当帮那些学习正则的人们,高手请略过此段.
在循环语句中
m.group(0) 是大捕获组 就是正则找到的一个完整超链接
m.group(1) 是第一个捕获组 就是正则中第一个圆括号匹配的内容.
m.group(2) 是第二个捕获组 就是正则中第二个圆括号匹配的内容.
....
m.appendReplacement(sb, "$1"+"将连接地址做处理后进行替换"+"$3");
这段代码是用重新拼接的内容替换原来的大捕获组. $1代表第一个捕获组匹配的内容,$3代表第三个捕获组匹配的内容(第二个捕获组别我用其他内容替换掉了).
展开