因工作需要,第一次在java中倒腾正则表达式,因为没弄过,所以非常水,不过还是讲自己折腾出来的东西丢上来,待日后又忘了时回头看看。
先设定一个正则表达式作为规则,再将需要匹配的内容用此规则进行匹配,如下两步:
String regex = "(?:src|SRC)(?: *)=(?: *)(?:\"|')?(.*?)(?:\"|'|>|\\s+)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
匹配完后,用while对 matcher.find进行循环,就能获取到各次匹配到的字符串并作出相应的操作;
match.appendReplacement(sb,str) 是对某次匹配到的字符串进行替换,相对与直接的Str.replace的有点是仅对该次匹配到的进行替换,而非全文替换。
写不下去了,直接丢代码,以后忘了自己看代码:
import java.util.regex.*;
public class Test_zz{
public static void main(String[] args)
throws Exception {
//需要匹配和替换的字符串
String content = "<img width=\"100%\" src=\"/img/2013/W020130410505894171855.jpg\" OLDSRC=\"W020130410505894171855.jpg\"></img>" +
"<br><img src = 'image/2014/aa.jpg'></img>";
//正则表达式
String regex = "(?:src|SRC)(?: *)=(?: *)(?:\"|')?(.*?)(?:\"|'|>|\\s+)";
<span style="white-space:pre"> </span>Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
StringBuffer sb = new StringBuffer();
int i=1;
while(matcher.find()){//循环获取 符合条件的字符串
String URL = matcher.group(0);//匹配到的字符串
String URL1 = matcher.group(1);//第一个子串(此处获取的为文件夹的路径和名称)
//将单独的文件名称截取出来
String fileName = matcher.group(1);
if(fileName.indexOf("/")>-1){
fileName = fileName.substring(fileName.lastIndexOf("/")+1);
}
//将原本的文件路径替换为新的路径
URL = URL.replace(URL1, "/resource/OldWebsite/"+fileName);
//正则的替换,替换目标位当前次匹配到的字符串
matcher.appendReplacement(sb, URL);
System.out.println("第"+(i++)+"次匹配后,sb的内容为:"+sb);
}
matcher.appendTail(sb);//将最后一次匹配后剩余的尾巴加到sb中
System.out.println("匹配完成,加上尾巴后,sb的内容为:"+sb);
}
}
最终打印的内容为:
第1次匹配后,sb的内容为:<img width="100%" src="/resource/OldWebsite/W020130410505894171855.jpg"
第2次匹配后,sb的内容为:<img width="100%" src="/resource/OldWebsite/W020130410505894171855.jpg" OLDSRC="/resource/OldWebsite/W020130410505894171855.jpg"
第3次匹配后,sb的内容为:<img width="100%" src="/resource/OldWebsite/W020130410505894171855.jpg" OLDSRC="/resource/OldWebsite/W020130410505894171855.jpg"></img><br><img src = '/resource/OldWebsite/aa.jpg'
匹配完成,加上尾巴后,sb的内容为:<img width="100%" src="/resource/OldWebsite/W020130410505894171855.jpg" OLDSRC="/resource/OldWebsite/W020130410505894171855.jpg"></img><br><img src = '/resource/OldWebsite/aa.jpg'></img>