java 正则匹配提取html纯文本

本文详细介绍了Java NIO中的Buffer类,包括其基本概念、重要属性及其在数据存储和检索中的作用。通过本文,读者可以了解到Buffer的容量、界限、位置及标记等核心属性,并掌握如何使用这些属性进行高效的数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来自于我的个人博客: java 正则匹配提取html纯文本


做内容的大家都知道,从html中直接提取纯文本是一个很大的问题,现将我做的正则匹配贴上:


import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TestReg {
	static String reg = "<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*>";
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "<p></p><p>&nbsp;&nbsp;&nbsp;&nbsp;我们以Buffer类开始对java.nio包的浏览历程。"
				+ "这些类是java.nio的构造基础。这个系列中,我们将跟随《java NIO》书籍一起深入研究缓冲区,"
				+ "了解各种不同的类型,并学会怎样使用。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;一个Buffer对象"
				+ "是固定数量的数据容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。"
				+ "</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Buffer类的家谱:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;"
				+ "<img src="http://photo.jfq24.com/image/bigger/blog/server/upload/2014-07/user_2/13711406446068247.png" "
				+ "title="2014-07-27_1527.png"></p><p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>一,缓冲区基础</strong>"
				+ "</p><p>&nbsp;&nbsp;&nbsp; 1.缓冲区的属性:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
				+ "容量(capacity):缓冲区能够容纳的数据元素的最大数量,这一容量是在缓冲区被创建时设置的,并且永远不能被改变</p>"
				+ "<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上界(limit): 缓冲区的第一个不能被读或写的元素。"
				+ "或者说,缓冲区中现存元素的计数。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位置(position): "
				+ "下一个要被读或写的元素的索引,位置会自动由相应的get()和put()函数更新。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
				+ "&nbsp;&nbsp;&nbsp;标记(mark): 一个备忘位置,调用mark()来设定mark=position.调用reset()设定position=mark。"
				+ "标记在设定前是未定义的(undefied)。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这四个属性的关系如下:</p";
		Pattern p = Pattern.compile(reg, Pattern.MULTILINE);
		str = str.replace("&nbsp;", "");
		Matcher m = p.matcher(str);
		while(m.find()) {
			String data = m.group(1).trim();
			if(!"".equals(data)) {
				System.out.println(data);
			}
		}
	}

}


Java中可以使用正则表达式匹配提取字符串中的内容。以下是一个简单的示例代码: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void main(String[] args) { String input = "Hello, my name is John. I am 30 years old."; String pattern = ".*name is (\\w+).* (\\d+) years old."; // 创建 Pattern 对象 Pattern p = Pattern.compile(pattern); // 创建 Matcher 对象 Matcher m = p.matcher(input); // 查找匹配 if (m.find()) { // 输出第一个捕获组的值,即名字 System.out.println("Name: " + m.group(1)); // 输出第二个捕获组的值,即年龄 System.out.println("Age: " + m.group(2)); } else { System.out.println("No match found."); } } } ``` 运行以上代码,输出结果为: ``` Name: John Age: 30 ``` 在上面的代码中,我们首先定义了一个字符串 input,该字符串包含了一些文本信息。然后,我们定义了一个正则表达式 pattern,该正则表达式用于匹配 input 中的文本信息,并且包含了两个捕获组,用于提取名字和年龄信息。 接着,我们使用 Pattern 类的 compile() 方法将正则表达式编译成一个 Pattern 对象,并且使用 Matcher 类的 matcher() 方法创建一个 Matcher 对象,该对象用于在 input 中查找匹配的文本信息。 最后,我们使用 Matcher 对象的 find() 方法查找匹配,并且使用 group() 方法提取捕获组中的信息。在本例中,我们输出了第一个捕获组的值(即名字)和第二个捕获组的值(即年龄)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值