• 正则表达式高级应用


    以前学正则表达式,就只学学匹配规则,比如正则去判断是否手机号,邮箱等等。其实这种也不需要特意去手写了,因为能搜出一大堆。

    但是有时候的需求还真搜不出来。,比如截取某种字符串的其中一段。

    ---start---
    gggggg
    ppppppp
    ---end---
    ---start---
    aaaaaaa
    bbbbbbb
    ---end---
    ---start---
    eeeeeee
    dddddd
    ---end---
    

     一位朋友想截取倒数第二个---start---到最后一个---end---结尾。

    中间的字符不确定。

    (注意以下使用js语法)

    其实这种用字符串切割简单很多。

    var res = str.substr(str.lastIndexOf("---start---",str.lastIndexOf("---start---") - 1) + 1)

    然后用正则是这样

    var res = str.replace(/[sS]*(---start---[sS]*---start---[sS]*)/,'$1')
    

      

    不少人看到这个可能一脸懵逼。

    其实主要还是 '$1',不太清楚。

    这个是取分组的第一组,小括号包的就是一组。

    ‘$2’就是取第二组,当然你得需要两个括号

    这里[sS]*就是前面的第一个start,然后小括号是以---start---开头,所以能取到第二个start,然后小括号就是我要取的值了。

    再来写一个例子

    // leftBanDaysStr 是一段a标签 ,想取此标签的text
    var leftBanDaysStr ="<a class="ban_detail_url blue" ban_detail_url="1c21cd3f-b489-4ea2-9c74-d4d882493619" title="点击进入详情页">-7</a>";
    // 正则截取取数字
    var reg = /.*>(.*)</a>/;
    var leftBanDays = leftBanDaysStr.replace(reg, '$1');
    

      

  • 相关阅读:
    Matrix Chain Multiplication[HDU1082]
    Color a Tree[HDU1055]
    Piggy-Bank[HDU1114]
    Catching Fish[HDU1077]
    用单位圆覆盖尽量多的点
    LianLianKan[HDU4272]
    Travelling
    求多边形面积
    方格取数(1)
    Pebbles
  • 原文地址:https://www.cnblogs.com/SunSAS/p/14174268.html
Copyright © 2020-2023  润新知