1,
public class demo2 {
public static void main(String[] args) {
/*
需求
请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
验证手机号码 13112345678 13712345667 13945679027 139456790271
验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
*/
String regex1 = "1[3-9]\\d{9}";
System.out.println("13112345678".matches(regex1));
System.out.println("----------------------");
String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
System.out.println("020-2324242".matches(regex2));
System.out.println("----------------------");
String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
System.out.println("3232323@qq.com".matches(regex3));
//
String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
System.out.println("23:11:11".matches(regex4));
//
System.out.println("----------------------------");
//身份证号码匹配
String regex5 = "([1-9][0-9]{16})([0-9]|x|X)";
System.out.println("41080119930228457x".matches(regex5));
String regex6 = "[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]";//插件any-rule生成
System.out.println("41080119930228457x".matches(regex6 ));
}
}
2,
public class demo2 {
public static void main(String[] args) {
// /*
// 需求
// 请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
// 验证手机号码 13112345678 13712345667 13945679027 139456790271
// 验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
// 验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
// */
// String regex1 = "1[3-9]\\d{9}";
// System.out.println("13112345678".matches(regex1));
// System.out.println("----------------------");
// String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
// System.out.println("020-2324242".matches(regex2));
// System.out.println("----------------------");
// String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
// System.out.println("3232323@qq.com".matches(regex3));
// //
// String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
// System.out.println("23:11:11".matches(regex4));
// //
// System.out.println("----------------------------");
// //身份证号码匹配
// String regex5 = "([1-9][0-9]{16})([0-9]|x|X)";
// System.out.println("41080119930228457x".matches(regex5));
// String regex6 = "[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]";//插件any-rule生成
// System.out.println("41080119930228457x".matches(regex6 ));
//爬虫
/* 有如下文本,请按照要求爬取数据。
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
要求:找出里面所有的JavaXX
*/
// String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,\n" +
// " 因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
// String regex7 = "Java[0-9]{0,2}";//正则表达式
// Pattern p = Pattern.compile(regex7);//获取正则表达式的对象
// Matcher m =p.matcher(str);//获取文本匹配器的对象
// while (m.find())//循环获取、m.group()
// {
// String s = m.group();
// System.out.println(s);
// }
/*
有如下文本,按要求爬取数据。
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
需求1:爬取版本号为8,11.17的Java文本,但是只要Java,不显示版本号。
需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17
需求3:爬取除了版本号为8,11.17的Java文本,
*/
// String st = " java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和Java11,\n" +
// " 因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台\n";
//需求1:爬取版本号为8,11.17的Java文本,但是只要Java,不显示版本号。
//1.定义正则表达式
//?理解为前面的数据Java
//=表示在Java后面要跟随的数据
//但是在获取的时候,只获取前半部分
// String regex7 = "Java(?=8|11|17)";
// Pattern p = Pattern.compile(regex7);
// Matcher m = p.matcher(str);
// while(m.find())
// {
// String s = m.group();
// System.out.println(s);
// }
// 需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17
// String regex8 = "((?i)Java)(8|11|17)";
// Pattern p = Pattern.compile(regex8);
// Matcher m = p.matcher(st);
// while(m.find())
// {
// String s = m.group();
// System.out.println(s);
// }
// 需求3:爬取除了版本号为8,11.17的Java文本,
// String regex9 = "((?i)java)(?!8|11|17)";//感叹号表示不等于
// Pattern p = Pattern.compile(regex9);
// Matcher m = p.matcher(st);
// while(m.find())
// {
// String s = m.group();
// System.out.println(s);
// }
/*
有一段字符串:小诗诗dqwefqwfqwfwq12312小丹丹dqwefqwfqwfwq12312小惠惠
要求1:把字符串中三个姓名之间的字母替换为vs
要求2:把字符串中的三个姓名切割出来*/
String s = "小诗诗dqwefqwfqwfwq12312小丹丹dqwefqwfqwfwq12312小惠惠";
String regex = "[\\w&&[^_]]+";
//细节:
//方法在底层跟之前一样也会创建文本解析器的对象
//然后从头开始去读取字符串中的内容,只要有满足的,那么就用第一个参数去替换。
String r = s.replaceAll(regex,"vs");
System.out.println(r);
String [] a = s.split(regex);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
3,
public class demo3 {
public static void main(String[] args) {
//需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
//举例: a123a b456b 17891 &abc& a123b(false)
// \\组号:表示把第X组的内容再出来用一次
//另外,从左括号开始数,第一左括号是第一组,第二个左括号是第二组。......
String regex1 = "(.).+\\1";
System.out.println("a123a".matches(regex1));
}
}
4,
public class demo3 {
public static void main(String[] args) {
//需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
//举例: abc123abc b456b 123789123 &!@abc&!@ abc123abd(false)
String regex2 = "(.+).+\\1";
System.out.println("abc123abc".matches(regex2));
}
}
5,
public class demo3 {
public static void main(String[] args) {
//需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
//举例: aaa123aaa bbb456bbb 111789111 &&abc&&
//(.):把首字母看做一组
// \\2:把首字母拿出来再次使用
// *:作用于\\2,表示后面重复的内容出现日次或多次
String regex3 = "((.)\\2).+\\1";
System.out.println("aaa123aaa".matches(regex3 ));
}
}
6,