正则表达式语法及java中的使用

语法规则

符号注释
\d匹配一个数字
\w匹配一个数字或字符或#或汉字
[]匹配一个和中括号中内容相同的
[^]匹配一个不在中括号中的东西
^jds匹配以jds开头的字符串,dfsdjdskk这样的不算
jds$匹配以jds结尾的字符串,dfsdjdskk这样的不算
+匹配左侧字符一次或者多次
*匹配左侧字符零次或多次
匹配前面的字符零次或者一次
()将多个字符看成一个字符
{n}重复n次
{n,}至少重复n次,即能够重复匹配大于等于n次
{n,m}重复匹配大于等于n,小于等于m次
|或者

代码演示

^,\d,+,$组合使用

            String reg = "^\\d+$";
            String str = new Scanner(System.in).next();
            Pattern pattern = Pattern.compile(reg);
            Matcher matcher = pattern.matcher(str);
            if (matcher.find()){
                System.out.println("输入格式正确");
            }else {
                System.out.println("输入格式有误");
            }

结果

7456196455
输入格式正确
7dsxsdvs654654
输入格式有误
ds7563965
输入格式有误
464654654k
输入格式有误

该正则表达式的说明

^\d+$
开头匹配一个数字匹配一次或多次结尾

String reg = “^\\d+$”;等价于String reg = “^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d$”,其中\d有[1,n]个,n取决于你输入字符串的长度。

意思就是要匹配开头第一个是数字的,中间全是数字的,结尾是数字的,\\d+表示的是对下一个东西进行是不是数字的判断,如果是,继续判断下一个,不是就判断结束,返回false,\d$表示最后一个是数字

7456196455

先匹配到第一个是7,满足==^\\d开头是数字的条件,接着是4,满足\\d+==全是数字的条件。

7dsxsdvs654654

先匹配到第一个是7,满足==^\\d开头是数字的条件,接着是d,满足\\d+==全是数字的条件。


^,\w,(),$组合使用

            String reg = "^\\w+(@163.com)$";
            String str = new Scanner(System.in).next();
            Pattern pattern = Pattern.compile(reg);
            Matcher matcher = pattern.matcher(str);
            if (matcher.find()){
                System.out.println("输入格式正确");
            }else {
                System.out.println("输入格式有误");
            }

结果

41dscd6456sds_@163.com
输入格式正确
#fsdfsd@163.com
输入格式正确
$dfdsfs163.com
输入格式有误
,sfff163.com
输入格式有误
!dfd163.com
输入格式有误
.DSDS163.COM
输入格式有误
/@163.com
输入格式有误

该正则表达式的说明

^\w+(@163.com)$
开头匹配一个数字匹配一次或多次要有@163.com字符结尾

String reg = “^\\w+(@163.com)$”;

意思就是要匹配以数字或字母或下画线或#或汉字开头,以@163.com结尾,你可以将()理解成把@163.com包裹成一个字符


^,\d,{n},$组合使用

            String reg = "^1\\d{10}$";
            String str = new Scanner(System.in).next();
            Pattern pattern = Pattern.compile(reg);
            Matcher matcher = pattern.matcher(str);
            if (matcher.find()){
                System.out.println("输入格式正确");
            }else {
                System.out.println("输入格式有误");
            }

结果

12345678955
输入格式正确
21234567894
输入格式有误
g456
输入格式有误
123
输入格式有误

该正则表达式的说明

^\d{10}$
开头匹配一个数字重复十次结尾

String reg = “^1\\d{10}$”;

意思就是开头是1,然后出现十次数字,确保为后一位是数字

^,|,\d,{n,m},{}组合使用

            String reg = "^(1|2)\\d{3,5}[a-zA-Z]{6,}";
            String str = new Scanner(System.in).next();
            Pattern pattern = Pattern.compile(reg);
            Matcher matcher = pattern.matcher(str);
            if (matcher.find()){
                System.out.println("输入格式正确");
            }else {
                System.out.println("输入格式有误");
            }

结果

1789abcdzd
输入格式正确
178abcdzd
输入格式有误
1789555abcdzd
输入格式有误
1789abcdz
输入格式有误
24646fgbhnmsds
输入格式正确

该正则表达式的说明

^|\d{3,5}[a-zA-Z]{6,}
开头或者匹配一个数字重复[3,5]次匹配一个字母至少要匹配6次

String reg = “^(1|2)\\d{3,5}[a-zA-Z]{6,}”;

意思就是以1或2开头,接着是3到5个数字,接着是6个以上的26个字母,不区分大小写

使用案例

最近看一个B站视频时发现up主说话贼快,所以想把他的字幕抽出来。怎么抽呢?
在这里插入图片描述
拿到了字幕是这样的
在这里插入图片描述
在idea中用正则表达式替换掉无用的字符:

(},).*(\n).*(\n).*("from":).*(\n).*(\n).*(\n).*("content": )

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值