所谓正则表达式 ,由一些特定的字符组成,代表的是一个规则。作用如下:
(1)用来校验数据格式是否合法
(2)在一段文本中查找满足要求的内容
(3)用于搜索替换、分割内容
String类提供了matches方法,判断字符串是否匹配正则表达式。
符号 | 含义 | 举例 |
---|---|---|
? | 0次或1次 | \\d? |
* | 0次或多次 | \\d* (abc)* |
+ | 1次或多次 | \\d+ (abc)+ |
{} | 具体次数 | {7,19} |
(?i) | 忽略后面字符的大小写 | (?i)abc |
a((?i)b)c | 只忽略b的大小写 | a((?i)b)c |
[] | 里面的内容出现一次 | [abc] |
^ | 取反 | [^abc] |
&& | 交集,不能写单个的& | [a-z&&m-p] |
. | 任意字符 | \n 回车符号不匹配 |
\ | 转义字符 | \\d |
\\d | 0-9 | \\d+ |
\\D | 非0-9 | \\D+ |
\\s | 空白字符 | |
\\S | 非空白字符 | [^\s] |
\\w | 单词字符 | [a-zA-Z_0-9] |
\\W | 非单词字符 | [^\w] |
() | 分组 | a(bc)+ |
| | 写在方括号外面表示并集 | ab|AB |
案例:
java
String data ="电话:18621312888,186231231777\n" +"或者联系邮箱:boniu@itcast.cn,\n" +"座机电话:010097423895,010-98951256\n" + "邮箱:7826448211@qq.com,\n" +"邮箱2:dlei0009@163.com,\n" + "热线电话:401-638-9090 ,400-618-4990,4002312000,4002356890";
//1.定义爬取规则(正则表达式)
String regex = "(\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2})|" +
"(1[3-9]\\d{9})|(0\\d{2,5}-?\\d{5,15})|400-?\\d{3,8}-?\\d{3,8}";
// 2.把正则表达式封装成一个Pattern对象
Pattern pattern = Pattern.compile(regex);
// 3.通过pattern对象得到查找内容的匹配器
Matcher matcher = pattern.matcher(data);
// 4.通过匹配器开始去内容中查找信息
while(matcher.find()){
System.out.println(matcher.group()); //取出信息
}
来源:黑马课程