正则匹配html标签_匹配两字符串之间内容_匹配image标签

35 篇文章 0 订阅

搜索时可以用notepad++ 搜索测试,匹配部分会变为选中状态

 

1匹配image标签

<img([\s\S]*?)>

说明:

(1)  ([\s\S]*?) 代表任意字符   ? 指不贪心匹配     不加 ? 则指贪心匹配

(2) java中使用这个正则要用双斜杠\\,这里是在notepad所以只有一个斜杠,下面同理

 

2 匹配指定src的image标签

<img([\s\S]*?)src=\\"https://www.baidu.com([\s\S]*?)>

说明:

(1) src=\\"   是因为 我的数据库保存的正文 是   这么写的 src=\"   ,所以在notepad++搜索时要多加个斜杠用来匹配斜杠

(2) 此正则不能用于批量替换可用于搜索查找问题,替换时要用明确的替换目标文本。因为会把前一个未匹配image和后一个匹配image以及中间所有内容,算为一个匹配,此正则待优化

(3) 我的引号是双引号,按需修改为你的引号

 

3匹配指定src|href的标签

(href|src)=\\"http([\s\S]*?)>

4 正则手册

https://tool.oschina.net/uploads/apidocs/jquery/regexp.html

 

5匹配html标签,并用java替换,<[^>]+>

String htmlStr = "<P>召开2020年工作会议 </P><P>召开2020年工作会议 </P>";
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(" ").trim(); // 过滤html标签,并替换为空格,但去除头尾空白
System.out.println(htmlStr);

 

6 java复杂替换

我这里要替换的updateSQL是用navicat导出的要批量替换的数据,每行一条sql

代码还有完善空间,但是偶尔用以下无所谓,

本代码实现了,查找updateSQL中的img等标签,并替换src=c:/这类属性为空

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
	public static void main(String[] args) throws Exception {
		
		File file = new File("D:/updateSQL.txt");

			
		BufferedReader br = new BufferedReader(new FileReader(file));
		FileOutputStream fos=new FileOutputStream(new File("D:/updateSQL2.txt"));
        OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");
        BufferedWriter  bw=new BufferedWriter(osw);
		
	    String line = null;
	    String regex = "<img([\\s\\S]*?)>";
	    Pattern pattern = Pattern.compile(regex);
	    
	    String regex2 = "<a([\\s\\S]*?)>";
	    Pattern pattern2 = Pattern.compile(regex2);
	    
	    String regex3 = "<v([\\s\\S]*?)>";
	    Pattern pattern3 = Pattern.compile(regex3);
	    
	    while ((line = br.readLine()) != null ) {
	    
	    	//遍历img标签
	        Matcher matcher = pattern.matcher(line);
	        while (matcher.find()) {
	        	String img = matcher.group();
	        	//如果图片的src属性符合规则,则替换为空
	            if(img.contains("file:///C") || img.contains("file:///c")) {
	            	line = line.replace(img, "");
	            }
	        }
	        
	        Matcher matcher2 = pattern2.matcher(line);
	        while (matcher2.find()) {
	        	String a = matcher2.group();
	            if(a.contains("file:///C") || a.contains("file:///c") ) {
	            	line = line.replace(a, "");
	            }
	        }
	        
	        Matcher matcher3 = pattern3.matcher(line);
	        while (matcher3.find()) {
	        	String v_imagedata = matcher3.group();
	            if(v_imagedata.contains("file:///C") || v_imagedata.contains("file:///c")) {
	            	line = line.replace(v_imagedata, "");
	            }
	        }
	    	
	        //System.out.println(line);
	        bw.write(line+"\t\n");
	    }
	 
	    br.close();
        bw.close();
        osw.close();
        fos.close(); 
	}
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yfx000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值