美文网首页
有意思的正则-待继续整理

有意思的正则-待继续整理

作者: 施天助 | 来源:发表于2019-04-16 20:40 被阅读0次

接口模式都是 https://xxx/a/b/c/eee.do , 要过滤出里面的接口名ddd,别人写的:
(/([^/.]+)(?:.do)?$/g).exec('https://xxx/a/b/c/eee.do') 虽然可以过滤出名称 eee,但是碰到接口名带点的就不行,如https://xxx/a/b/c/ddd.eee.do 就只能得到 eee 而不能得到想要的 ddd.eee。

下面是改造探索试过的几个方法:
1, (/([^/]+)(?:.do)?$/).exec('https://xxx/a/b/c/ddd.eee.do')
简单去掉前面[]中的点,想让它不包含点,结果: "ddd.eee.do", "ddd.eee.do" 两个都包含了.do

2, (/([^/.do]+)(?:.do)?$/).exec('https://xxx/a/b/c/ddd.eee.do') 前面看能否去掉.do,不成样子了。

3,分析1的结果,为啥第二个匹配仍然是ddd.eee.do?有可能还没走到后面的自匹配(?:.do),这个是不捕获的,看起来整个应该要没有.do,但现在又有.do,那显然是没走到那里,而是 'https://xxx/a/b/c/ddd.eee.do' 就满足了(/([^/]+) 的匹配,字符就被前面的匹配吃掉了【匹配会消耗字符是正则的特性】,
试验验证这个猜想:(/([^/]+)$/).exec('https://xxx/a/b/c/ddd.eee.do') 果然和1的结果一模一样。

4, 经过3想到有没有尽量少的匹配不把.do匹配在第一个匹配里的方法呢?(防被吃),立马想到非贪婪模式:?
(/([^/]+?)(?:.do)?$/).exec('https://xxx/a/b/c/ddd.eee.do') 才能得到想要的: "ddd.eee.do", "ddd.eee"
仅仅再加个?即可。

相关文章

  • 有意思的正则-待继续整理

    接口模式都是 https://xxx/a/b/c/eee.do , 要过滤出里面的接口名ddd,别人写的:(/([...

  • 《零基础上手Python爬虫系列》 - 10 正则表达式与JSO

    本篇目前为视频学习的笔记备注,待更新,本周内会整理完毕 常规使用 正则表达式处理01 数字 正则表达式是一门专门的...

  • 正则整理

  • 正则整理

    在element-ui里判断正则 0-100的整数 校验中文 只能输入数字

  • 待整理的

    OptionSet 参考1参考2 视频边下边播 HOW TO STREAM A VIDEO WITH AVURLA...

  • 待整理…

    2018.08.12 坐标德州 天气 晴 周记第9篇,原创第27篇,本周发朋友圈15条。 1.工作 这一周出图比较...

  • 待 整理

    乱弹及其他 1/3 2/31 牧荣萌2017-08-02 06:42 · 字数 688 · 阅读 2 · 日记本...

  • 待整理

    原文地址打包 原文地址

  • 待整理

    环境、行为、能力是下三层;信念、身份、精神(就是上面的三角,指的是你的焦点,你内在的驱动力)。 信念即三观的部分,...

  • 待整理

    01紧迫的事情 Linux命令整理 tomcat知识 nginx知识点梳理掌握 apache正向代理 英语 02遗...

网友评论

      本文标题:有意思的正则-待继续整理

      本文链接:https://www.haomeiwen.com/subject/xsviwqtx.html