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

Java个人实践-正则表达式

程序员文章站 2022-07-13 13:37:43
...

一,语法

语法 解释
[ABC] 匹配 [ ] 里面的字符Java个人实践-正则表达式
[^ABC] 匹配去除 [ ] 里面字符的剩余字符Java个人实践-正则表达式
[A-Z] 匹配按26个字母顺序区分匹配A-Z的字符Java个人实践-正则表达式
\f 匹配换页符
\n 匹配换 hang 符
\r 匹配回车符(还不知道这个回车符是啥)
\t 匹配制表符
\v 匹配垂直制表符
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]Java个人实践-正则表达式
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。Java个人实践-正则表达式
\w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_] (注意后面的下划线)Java个人实践-正则表达式
^ 匹配输入字符串的开始位置(匹配的必须是整段第一个,在这里如果写成^P则匹配不到,明白了吧,注意:这个正则表达式没在[ ]里)Java个人实践-正则表达式
$ 匹配整段话的最后一个Java个人实践-正则表达式
{,} 表示限定前面字符的出现次数Java个人实践-正则表达式
. 匹配除换行符 \n 之外的任何单字符Java个人实践-正则表达式
* 匹配前面字符出现0次或多次。等价于{0,}Java个人实践-正则表达式
+ 出现1次或多次。等价于{1,}Java个人实践-正则表达式
这个有两个含义:
1. 一个是前面字符出现0次或一次。等价于{0,1}.
2. 表示非贪婪模式(下面会演示什么是非贪婪模式)Java个人实践-正则表达式

二,贪婪模式和非贪婪模式

1,贪婪模式

解释:贪婪模式就是找到符合所写正则表达式的最大的一段字符。
演示:Java个人实践-正则表达式

2,非贪婪模式

解释:符合正则表达式中,最小的一段字符串
演示:Java个人实践-正则表达式
再加一个图方便理解
Java个人实践-正则表达式

三,正则表达式简单实战

爬取 https://www.qq.com/?fromdefault 的超链接

1,演示

Java个人实践-正则表达式
用到的第一个正则表达式:http[\s\S]+?"
Java个人实践-正则表达式
用到的第二个正则表达式:>[\S]*?<
Java个人实践-正则表达式

2,代码区

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class text03_pachong {
public static void main(String[] args) {
	text03_pachong t1 = new text03_pachong();
	String str = t1.getURLContent("https://www.qq.com/?fromdefault","gb2312");
	Pattern p = Pattern.compile("<a[\\s\\S]+?</a>");
	Matcher m = p.matcher(str);
	Pattern p1 = Pattern.compile("http[\\s\\S]+?\"");
	Matcher m1;
	Pattern p2 = Pattern.compile(">[\\S]*?<");
	Matcher m2;
	while(m.find()) {
		m1 = p1.matcher(m.group());
		m2 = p2.matcher(m.group());
		if(m1.find()) {
			if(m2.find()) {
				if(!m2.group().equals("><"))
					System.out.println(m1.group().substring(0,m1.group().length()-1)+"-----"+m2.group().substring(1,m2.group().length()-1));
			}
		}
		
	}
}
public String getURLContent(String urlStr,String charset) {
	StringBuilder sb=new StringBuilder();
	Pattern p1 = Pattern.compile("http[\\s\\S]+?\"");
	Pattern p2 = Pattern.compile(">[\\S]*?<");
	try {
		URL url = new URL(urlStr);
		BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(charset)));
		String temp = "";
		while((temp=reader.readLine())!=null) {
			sb.append(temp);
		}
	} catch (MalformedURLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}catch (IOException e) {
		// TODO: handle exception
	}
	return sb.toString();
}
}
相关标签: Java 笔记