java中,正则的匹配和替换

因工作需要,第一次在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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值