目录
前言:
1.概述:
2.正则表达式体验:
3.正则表达式字符
4.正则表达式在字符串方法中的使用
5.代码演示:
6.正则表达式支持爬取信息
7.代码演示:
前言:
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
1.概述:
正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。
2.正则表达式体验:
需求:
加入现在要求校验一个QQ号码是否正确,6位及20位之内,必须全部是数字。
/**正则表达式(regex) :可以用一些规定的字符来制定规则,并用来经检验数据格式的合法性
*
*/
public class regex_Demo1 {
public static void main(String[] args) {
//校验QQ号,必须全部是数字6-20位
System.out.println(checkQQ("251410401102"));
System.out.println(checkQQ("12841"));
System.out.println(checkQQ("13929jfuhfuc"));
System.out.println(checkQQ(null));
System.out.println("==============================");
System.out.println(checkQQ2("251410401102"));
System.out.println(checkQQ2("12841"));
System.out.println(checkQQ2("13929jfuhfuc"));
System.out.println(checkQQ2(null));
}
public static boolean checkQQ2(String qq){
//正则表达式
return qq != null && qq.matches("\\d{6,20}");//只能是数字
}
public static boolean checkQQ(String qq) {
//1、判断QQ号的长度是否满足要求
if (qq == null || qq.length()<6||qq.length()>20) {
return false;
}
//2、判断是否全部是数字,不是则返回false
for (int i = 0; i <qq.length() ; i++) {
char ch = qq.charAt(i);
//判断这个字符是否不是数字,不是数字直接返回false
if (ch<'0'||ch>'9'){
return false;
}
}
return false;
}
}
3.正则表达式字符
3.1字符类(默认匹配一个字符)
3.2预定义的字符类(默认匹配一个字符)
3.3贪婪的量词(配合匹配多个字符)
3.4字符串对象提供了匹配正则表达式规则的API
4.正则表达式在字符串方法中的使用
5.代码演示:
public class regex_Demo2 {
public static void main(String[] args) {
//1.分割
String name = "小路dhfadk蓉儿llvok武则天";
String[] arrs =name.split("\\w+");
for (int i = 0; i < arrs.length; i++) {
System.out.println(args[i]);
}
String arrs2 = name.replaceAll("\\w+"," ");
System.out.println(arrs2);
}
}
6.正则表达式支持爬取信息
7.代码演示:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//正则表达式爬取信息
public class regex_Demo3 {
public static void main(String[] args) {
//定义内容
String rs = "黑马程序员JAVA,电话:020-123938,邮箱:2683857059@qq.com,黑马程序员python,电话:18765832633,020100323 邮箱:1189231782@qq.com"
+"黑马程序员CSS,电话:400-100-3233,邮箱:39184185@.qq.com";
//定义爬取规则
String regex="(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})| (1[3-9]\\d{9})" +
"|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";//爬取邮箱和手机号
//1、编译正则表达式成为一个匹配规则对象
Pattern pattern = Pattern.compile(regex);
//2、通过匹配规则得到一个匹配数据内容的匹配器对象
Matcher matcher = pattern.matcher(rs);
//3、通过匹配器去内容中爬取信息
while(matcher.find()){
System.out.println(matcher.group());
}
}
}