欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA笔记:正则表达式

程序员文章站 2022-06-26 11:33:43
...

简介

正则表达式一般适用于复杂文本的处理,是强大又灵活的文本处理工具,几乎所有的编程语言都支持正则表达式。主要是通过一个规则匹配一类字符串

正则表达式规则

JAVA笔记:正则表达式图源于百度,侵权删。
一直保存了这个图片,个人觉得这个图就够大部分正则表达式使用了

正则表达式的使用

在JAVA中java,util.regex包下已经封装好了大部分的方法
核心类:
Pattern:
正则表达式的编译表示形式。
Pattern p = Pattern. compile ( r,int ) ; //建立正则表达式,并启用相应模式
Matcher:
与 Pattern 一起使用,对character[]执行匹配操作
Matcher m = p.matcher(str); //匹配str字符串

使用步骤:
1、创建表达式
2、创建Matcher对象
3、对结果操作

Demo

		Pattern p = Pattern.compile("([a-z]+)([0-9]+)");
		Matcher m = p.matcher("hello23333hi");
		while(m.find()) {
			System.out.println(m.group());//==>group(0)匹配整个字符串//hello23333
			System.out.println(m.group(1));//hello
			System.out.println(m.group(2));//23333
		}

推荐一个测试正则的app——RegexBuddy.exe
JAVA笔记:正则表达式挺好用的一个测试正则表达式程序

Demo
爬取网站,得到超链接

@Test
	void test() throws Exception {
		StringBuilder sb = new StringBuilder();
		URL url = new URL("http://www.163.com");
		//部分网页需要模拟请求
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setRequestMethod("GET");
		//
		connection.setRequestProperty("User-Agent", 
				"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36");
		BufferedReader reader = new BufferedReader(
				new InputStreamReader(connection.getInputStream(),Charset.forName("gbk")));
		String result = "";
		while((result = reader.readLine())!=null) {
			sb.append(result);
		}
		//匹配所有的超链接
		Pattern pattern = Pattern.compile("href=\"([a-zA-Z]+:\\/\\/[^\\s]+)\"");
		Matcher m = pattern.matcher(sb.toString());
		while(m.find()) {
			System.out.println(m.group(1));
		}
	}
相关标签: JAVA