zoukankan      html  css  js  c++  java
  • 025.1 正则表达式 常用功能

    内容:正则表达式是什么?为什么会有正则表达式?正则表达式常用功能

    #####################正则表达式是什么?

    正则表达式是用于匹配想要的规则的字符串,如:

    var str = "abc123def";
    var patt1 = /[0-9]+/;
    document.write(str.match(patt1));

    patt1 就是一个 正则表达式,这里是匹配数字,要匹配其他,当然要学规则

    #####################为什么会有正则表达式?

    有匹配字符串的需求,比如上面例子,如果数字更长,我们又要取出,用代码编写就会比较复杂,如果使用正则,每次都是使用这个方法,熟悉后,编写迅速,太多就不写了,啰嗦

    ###############################################################################常用功能

    ###############规则

     java 中要重复出现

    ###################Java正则常用功能

    //####切割

    private static void splitDemo()
    {
        String temp = "awelafew##aewwoeif$$$$fewaigaxxxxoaigjwkqqqqqq";
        String regex = "(.)\1+";   //重复数量大于1
        String[] names = temp.split(regex);
        for(String name:names){
            System.out.println(name);
        }
    }

    与正则匹配的字符为:
    ##
    ww
    $$$$
    xxxx
    qqqqqq

    调用结果:输出

    awelafew
    ae
    oeif
    fewaiga
    oaigjwk

    这里通过下面这个例子理解重复问题。

    ([0-9])1{5} 或 ([d])1{5} 连续相同的6位数字 如:333333
    ([0-9a-zA-Z])1{5}   连续相同的6位数字或字母 如:222222 cccccc ZZZZZZ
    ([d])1{2}([a-z])2{2} 连续相同3位数字后根连续相同的三位小写字母 如:222www
    ([d])1{2}([a-z])2{2}|([a-z])3{2}([d])4{2} 同上,但是能匹配数字+字母或字母+数字 如:222www 或 www222
    这么多的例子自己可以扩展,要注意的就是 1 2代表位置,从左到右递增

    所以上面的正则是可以改成(.)\1{1,}

    //####替换

    {
        String num = "15722226666";
        num = num.replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2");
        //在方法多参数时,后面的参数可以通过  $编号 的形式取到前一个参数的组
        System.out.println(num);
    }

    调用结果:输出

    157****6666

     //####获取
    实现获取:将符合规则的内容提取出来
    用正则表达式对象。java.util.regex.Pattern
    1.将字符串规则封装成Pattern对象。Pattern.compile(regex)
    2.通过正则对象获取匹配器对象。用对将正则规则作用到要操作的字符串上
    3.通过匹配器对象的方法,对字符串进行操作
    Pattern p = Pattern.compile("a*b");  
    Matcher m = p.matcher("aaaaab");
    boolean b = m.matches();

    Matcher类
    • matches 方法尝试将整个输入序列与该模式匹配。
    • lookingAt 尝试将输入序列从头开始与该模式匹配。
    • find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

     String
    group() 返回由以前匹配操作所匹配的输入子序列。

    单词边界:\b

    步骤:
    1、获取Pattern类
    2、Pattern类和Matcher关联
    3、匹配
    4、获取

    private static void getDemo()
    {
        String source = "aix awefawe wega aiq wea fwa gal aweflia";
        String regex = "\b[a-zA-Z]{3}";                       // 开头以字母开始,选取前面三个
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(source);
        while(m.find()){
            System.out.println(m.group());
        }
    }
  • 相关阅读:
    mysql添加字段索引失败 BLOB/TEXT column 'col2' used in key specification without a key length
    ajax跨域处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
    pycharm/Goland/Webstorm永久激活记录
    nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument解决
    mysql优化之explain各参数详解:
    Django项目中"expected str, bytes or os.PathLike object, not list"错误解决:
    Mysql之1451
    python2与python3下的base64模块
    celery:Unrecoverable error: AttributeError("'unicode' object has no attribute 'iteritems')
    django-redis缓存记录
  • 原文地址:https://www.cnblogs.com/-nbloser/p/9662501.html
Copyright © 2011-2022 走看看