正则表达式分组

目录

什么是分组

分组的应用

1:爬取内容需要包含重复内容

2:在字符串中替换掉重复的文本

括号不代表分组情况


什么是分组

在正则表达式中用()进行分组

如"(\\w|\\d){2,5}[2345]\\d+(\\w&&[^._])"

而每一个分组都有自己的序号

以左括号为标准

第一个出现的为第一组

其中(\\w|\\d)是第一组,(\\w&&[^._])是二组

类似嵌套的正则(a*|(b+{9})

其中该正则整体为第一组,(b+{9})为第二组

分组的应用

1:爬取内容需要包含重复内容

如爬取aaa1234123aaa                     bbbdsffsdbbb                sssdfsdsss

等开始字符与结束字符相同的的文本时

正则表达式为(\\.+)\\.*\\1

\\后面的数字为组号,为几就代表与组几的内容应相同

static String s="aaadfgaaa笑死我了aaasfdsfaaaadfgkjdfklsjkajgdsldfjkgdjgiekdnvmkswd笑死我了";
   static Pattern p=Pattern.compile("(\\w+)\\w+\\1");
 static Matcher m=p.matcher(s);
    public static void main(String[] args) {
        while(m.find()){
            String l= m.group();
       System.out.println(l);
        }
    }

2:在字符串中替换掉重复的文本

 在这正则表达式外使用分组的内容时使用$表示组别

String s="我要成神神神神神神神神神神神神神神神神神神神神神神";
        String s1=s.replaceAll("(.)\\1+","$1");
        System.out.println(s1);

括号不代表分组情况

(?:正则)   含义:获取所有符合的文本    例:Java(?:8|11|17)       

即表示获取在Java后符合正则表达式我文本整体

(?=正则)      含义获取符合文本的前半部分      Java(?=8|11|17)

(?!正则)       获取不是指定内容的文本的前半部分                   Java(?!8|11|17)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值