import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("all")
public class 正则表达式 {
/**
* 目标:深入学习正则表达式的写法。
* 预定义字符类
* 任何字符工
* \d 数字:[0-9]
* \D 非数字:[^0-9]
* \s空白字符:[\t\n\xOB\f\r]
* \S非空白字符:[^\s]
* \w单词字符:[a-zA-2 0-9]
* \W 非单词字符:[^\w]
* 以上正则匹配只能校验单个字符 如果想校验多个字符,需要加上量词
*
*
*
* 字符类
* [abc]a、b 或 c(简单类)
* [^abc]任何字符,除了 a、b 或 c(否定)[a-zA-Z]a到z或A到Z
* 两头的字母包括在内(范围)[a-d[m-p]]a到d或m到p:[a-dm-p](并集)
* [a-z&&[def23]] d、e 或 f(交集)[a-z&&[^bc]]a到z,
* 除了b和c:[ad-z]
* [a-z&&[^m-p]] a到z,而非 m到p:[a-lq-z](减去)
* 并集| 交集&& 除去 -
*
*
* Greedy 数量词
* x?,一次或一次也没有
* x*,零次或多次x+x,一次或多次
* X{n} ,x恰好 n 次
* x{n,}x,x至少 n 次
* X{n,m}x,至少 n 次,但是不超过 m 次
*/
public static void main(String[] args) {
boolean isPhone = checkPhone();
boolean isEmail = checkEmail();
System.out.println("手机号校验结果:" + isPhone);
System.out.println("邮箱校验结果:" + isEmail);
splitTheString();
getData();
}
/**
* 校验手机号码
*
* @return
*/
private static boolean checkPhone() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入手机号:");
String phone = scanner.nextLine();
boolean matches = phone.matches("1[3-9]\\d{9}");
return matches;
}
/**
* 检验邮箱
*
* @return
*/
private static boolean checkEmail() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入邮箱:");
String email = scanner.nextLine();
//21344@qq.com
//2314124@163.com
//13123134@xxx.com.cn
boolean matches = email.matches("\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2}");
return matches;
}
/**
* 正则表达式匹配分割字符串
*/
private static void splitTheString() {
//根据,分割字符串
String str = "王宝强,马蓉,宋喆,乔杉,张柏芝";
String[] split = str.split(",");
for (String s : split) {
System.out.println(s);
}
//根据正则表达式分割字符串
String str2 = "王宝强2314124124qaq马蓉23231578824124qaq宋喆23231578824124www乔杉232315788243239qqaq张柏芝";
String regex = "\\w+";
String[] split1 = str2.split(regex);
for (String s : split1) {
System.out.println(s);
}
}
/**
* 爬取内容获取信息
*/
public static void getData() {
String rs = "来学习Java一起变牛马,电话020-43422424,或者联系邮箱" +
"niumajava.cn,电话18762832633,0203232323" +
"邮箱pxj@niuma.cn,400-100-3233,4001003232";
//需求:从上面的内容中爬取出 电话号码和邮箱。
//爬取规则
String regex = "\\d{0,3}-\\d{7,8}|1[3-9]\\d{9}|\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2}" +
"|400-?\\d{3,8}-?\\d{3,8}";
//通过规则字符串创建一个匹配规则对象
Pattern pattern = Pattern.compile(regex);
//通过匹配规则对象得到一个匹配数据内容的匹配器对象
Matcher matcher = pattern.matcher(rs);
//通过匹配器去内容中爬取出信息
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
正则表达式的语法与应用
最新推荐文章于 2024-11-14 10:43:52 发布