正则表达式.java

正则表达式的作用:

①可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性**🧸**

🧩\[\]:只能是括号里的字符

🧩****\^:除了括号里的字符

🧩****- -:表示两段范围,满足其一即可

🧩****\[]:或者的意思,满足其一即可

🧩****. :表示任何字符

🧩****\d:一个数字:1-9

🧩****\D:非数字:\^0-9

🧩****\s:一个空白字符:\\t\\n\\x0B\\f\\r

🧩****\S:非空白字符

🧩****\w:英文,数字,下划线

🧩****\W:一个非单词字符:\^\\w

复制代码
只能是a  b  c(一个括号只能匹配一次)
复制代码
System.out.println("只能是a  b  c(一个括号只能匹配一次)-----");
        System.out.println("a".matches("[abc]"));//true
        System.out.println("aa".matches("[abc]"));//false
        System.out.println("z".matches("[abc]"));//false
复制代码
不能出现a  b  c
复制代码
System.out.println("w".matches("[^abc]"));//true
        System.out.println("a".matches("[^abc]"));//false
复制代码
a到z  A到Z (包头尾的范围)
复制代码
System.out.println("a".matches("[a-z[A-Z]]"));//true
        System.out.println("aa".matches("[a-z[A-Z]]"));//false
        System.out.println("0".matches("[a-z0-9]"));//true
复制代码
验证手机号码
复制代码
String regex1="1[3-9]\\d{9}";//第一个数字为1,第二个数字为3-9之间,后面9个为任意数字
        System.out.println("13567884537".matches(regex1));//true
复制代码
验证座机号码
复制代码
🧣020-2324242     02122442    027-42424    0712-3242434
🧣区号:0\\d{2,3}:0开头,任意数字出现2-3次
🧣?:出现0次或1次
🧣号码:[1-9]//d{4,9}:不能以0开头,任意数字出现4-9次
复制代码
String regex2="0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("020-2324242".matches(regex2));
        System.out.println("02122442".matches(regex2));
        System.out.println("027-42424".matches(regex2));
        System.out.println("0712-3242434".matches(regex2));
复制代码
验证邮箱号
复制代码
🧣3232323@qq.com  zhangsan@ittcast.cnn  dlei0009@163.com  dlei0009@163.com.cn
🧣+:表示至少出现一次
复制代码
String regex3="\\w+@[\\w&&[^_]]{2,7}(\\.[a-zA-Z]{2,3}){1,2}";
        //任意字母数字下划线,至少出现一次,必须出现@,字母数字可出现2到7次,
        //(必须出现.,a-z和A-Z之间的字母可出现2到3次)括号里面的情况,出现1到2次
        System.out.println("3232323@qq.com".matches(regex3));
        System.out.println("zhangsan@ittcast.cnn".matches(regex3));
        System.out.println("dlei0009@163.com.cn".matches(regex3));
复制代码
验证时间
复制代码
String regex4="([01]\\d|2[0-3])(:[0-5]\\d){1,2}";
        System.out.println("23:11:10".matches(regex4));
复制代码
忽略大小写(?!)
复制代码
String regex5="(?i)abc";//忽略abc的大小写
        System.out.println("abc".matches(regex5));
        System.out.println("AbC".matches(regex5));
        System.out.println("ABC".matches(regex5));

小结①

🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳

②在一段文本中查找满足要求的内容**🧸**

  • 按要求爬取数据
复制代码
package day0423regexDemo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo3 {
    public static void main(String[] args) {
        String str="Java啦啦" +"哈Java17太阳当空照Java10花儿对我笑Java2小鸟说早早早";
        //获取正则表达式的对象p,不是new出来的,调用构造方法来获取
        Pattern p=Pattern.compile("Java\\d{0,2}");

        //Matches:文本匹配器,作用:按照正则表达式的规则去读取字符串,从头开始读。就是在大串str中找符合规则的子串s
        //获取文本匹配器对象m
        Matcher m=p.matcher(str);
        while(m.find()){
            //m.find()的返回值是boolean类型,
            // 意思就是,拿着文本匹配器开始读,寻找是否有满足规则的子串
            // 没有,返回false,
            // 有,返回true,在底层记录了符合规则子串的起始索引和结束索引+1

            //group()方法,根据find()记录的索引获取子串,并截取
            String s= m.group();
            System.out.println(s);
        }
    }
}

🥇🥇🥇结果

相关推荐
狂炫冰美式2 分钟前
凌晨睡不着,我给台风巴威写了个追踪网站
前端·后端·github
雪隐38 分钟前
用Flutter做背单词APP-01服务器?不存在的,我家里就有
前端·人工智能·后端
用户2204603958681 小时前
ES模块和commonJS两种标准下中实现__dirname?一篇文章教你理清楚
前端
犹豫的大炮2 小时前
jQuery最核心的基础设施之一——数据缓存模块进化史
前端·缓存·jquery
小碗细面2 小时前
从 PRD 到上线:SpecKit 如何让 AI 真正参与前端交付
前端·ai编程·claude
WL学习笔记2 小时前
链式队列(数据结构)
前端·数据结构·jquery
我是大卫2 小时前
React源码解析-第三部分:协调与提交
前端·react.js·源码
都想学2 小时前
我把 12 个在线工具关掉了,换成了一个 Chrome 扩展
前端·chrome
xiaogai_gai2 小时前
钉钉数据集成到金蝶云星空案例分享:传给钉钉后,回传金蝶字段
java·前端·钉钉
步步为营DotNet2 小时前
借助 Semantic Kernel 与 Blazor 构建智能交互式前端应用
前端