正则表达式是对字符来制定规则,用来校验数据格式的合法性。
字符串对象提供了匹配正则表达式的方法。
public boolean matches(String regex); \\如果成功匹配正则表达式,返回true否则返回false
正则表达式匹配规则:
字符类(默认匹配一个字符)
[abc] | 只能是a或b或c |
[^abc] | 除了abc之外的所有字符 |
[a-zA-Z] | a到Z A到Z |
[a-d[m-p]] | a到d或m到p |
[a-z&&[def]] | 取交集,即def |
[a-z&&^[bc]] | a-z除了bc |
预定义的字符类(默认匹配一个字符)
. | 任何字符 |
\d | 一个数字0-9[0-9] |
\D | 非数字[^0-9] |
\s | 一个空白字符[\t\n\x0B\f\r] |
\S | 非空白字符[^\s]' |
\w | [a-zA-Z_0-9]英文数字下划线 |
\W | [^\w]一个非单词字符 |
贪婪的量词(配合匹配多个字符)
X? | X出现一次或根本不出现 |
X* | X出现零次或多次 |
X+ | X出现一次或多次 |
X{n} | X出现n次 |
X{n,} | |
X{n,m} |
正则表达式在字符串方法中的使用
public String replaceAll(String regex,String newStr); //按照正则表达式匹配的内容进行替换
public String[] split(String regex); //按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组
System.out.println("a".matches("[abc]"));//true
System.out.println("z".matches("[abc]"));//false
System.out.println("ab".matches("[abc]"));//false
System.out.println("ab".matches("[abc]+"));//true
System.out.println("a".matches("[abc]"));//true
正则表达式爬取信息:
可以先定义比较规则,如下:
String regex ="(\\w{1.}@\\w{2.10}(\\.\\w{2,10}))"+"(1[3-9]\\d{9})"
//可以用来匹配邮箱和电话号码
Pattern pattern =Parttern.compile(regex);
//使正则表达式成为一个匹配规则对象
Matcher matcher = pattern.matcher(rs);
//通过匹配规则对象,得到一个匹配内容的匹配器对象 rs 为你所要匹配的内容
while(matcher.find()){
System,out.println(matcher.group());
}
//通过匹配器去内容中爬取信息