zoukankan      html  css  js  c++  java
  • 【正则表达式】前瞻,后顾,负前瞻,负后顾

    举个例子:

    有个字符串

    str = "博客园 顾客 博客 客园"

    我们想匹配字符串里"博客园"的"客"字而不要其他的"客"字,这时就需要用到前瞻后顾。

    正则表达式如下:

    (?<=博)客(?=园)

    反过来,我们不想要"博客园"的"客"字,但是想要其他"客"字。这时就要用到负前瞻,负后顾

    正则表达式如下:

    (?<!博)客(?!园)

    总结一下:

    前瞻: exp1(?=exp2)     查找exp2前面的exp1

    后顾:  (?<=exp2)exp1   查找exp2后面的exp1

    负前瞻:  exp1(?=exp2)     查找后面不是exp2的exp1

    负后顾:  (?<=exp2)exp1   查找前面不是exp2的exp1

    可以发现,负前瞻、负后顾就是把前瞻、后顾中的"="改成了"!"

    注意:后顾功能在大多数语言中有长度限制,只能使用定长的表达式,像w+和d 这样的表达式长度可变,不能用在后顾中

    一个复杂一点的例子:

    str = "data: '|12 34 56 78 90|', data: '|12|3456|7890|', data: '|12|', data: '1234567890', data: '|1234|'  "

    我们要匹配data后面有||的部分,要求里面没有空格没有|并且长度大于2

    (?<=data: ')|[^ |]{2,}?|(?=')

    可以匹配到 |1234|

  • 相关阅读:
    错题本
    前端常用的代码片段
    前端生成二维码 jquery.qrcode.js
    jquery获取第几个元素的方法总结
    Jquery 获取第一个子元素
    个人作品(2016.3.17更新)
    360度全景制作
    期末项目_通用教学管理系统(季远琦&庞思瑶)
    java ee 第四周作业
    Web Service和EJB的区别
  • 原文地址:https://www.cnblogs.com/dplearning/p/5897316.html
Copyright © 2011-2022 走看看