JAVA笔记:正则表达式
程序员文章站
2022-06-26 11:33:43
...
简介
正则表达式一般适用于复杂文本的处理,是强大又灵活的文本处理工具,几乎所有的编程语言都支持正则表达式。主要是通过一个规则匹配一类字符串
正则表达式规则
图源于百度,侵权删。
一直保存了这个图片,个人觉得这个图就够大部分正则表达式使用了
正则表达式的使用
在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
挺好用的一个测试正则表达式程序
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));
}
}