• 【正则表达式】前瞻,后顾,负前瞻,负后顾, 断言


     
    前瞻: exp1(?=exp2) 查找exp2前面的exp1
    后顾: (?<=exp2)exp1 查找exp2后面的exp1
    负前瞻: exp1(?!exp2) 查找后面不是exp2的exp1
    负后顾: (?<!exp2)exp1 查找前面不是exp2的exp1
    注意:前瞻、后顾、负前瞻、负后顾, 这些表达式只是表示一个位置,跟^与$表示开始与结束一样
     
    前瞻示例:
    var path1 = 'path/hello.html';
    var path2 = 'path/nodata.html';
    var path3 = 'path/index.html';
    //如何取到id如/path/:id,并且id需要去掉.html这个后缀
    //使用前瞻的方法,需要找到.html前面的这个单词
    path1.match(/[w]+(?=.html$)/) //结果:["hello", index: 5, input: "path/hello.html", groups: undefined]
    path2.match(/[w]+(?=.html$)/) //结果:["nodata", index: 5, input: "path/nodata.html", groups: undefined]
    path3.match(/[w]+(?=.html$)/) //结果:["index", index: 5, input: "path/index.html", groups: undefined]

    //(?=.html$)这个表达式表示的意思是在.html$前面这个位置(这个表达式不会产生结果,只表示一个位置),具体意思就是:在字符串结尾($)前面的.html的前面的位置的单词
    后顾示例:
    var path1 = 'path/hello.html';
    var path2 = 'path/nodata.html';
    var path3 = 'path/index.html';
    //如何取到id如/path/:id,并且id需要去掉.html这个后缀
    //使用后顾的方法,需要找到path后面的这个单词
    path1.match(/(?<=path/)[w]+/) //结果:["hello", index: 5, input: "path/hello.html", groups: undefined]
    path2.match(/(?<=path/)[w]+/) //结果:["nodata", index: 5, input: "path/nodata.html", groups: undefined]
    path3.match(/(?<=path/)[w]+/) //结果:["index", index: 5, input: "path/index.html", groups: undefined]
    //(?<=path/)这个表达式的意思是找到 path/ 这个字符串后面的位置(不会产生结果,只表示一个位置)

    负前瞻示例:

    var str = 'a,1,b,2,c,3,'
    //把字符串改成 a=1,b=2,c=3,
    str.replace(/,(?![a-z]|$)/g, '='); //"a=1,b=2,c=3,"
    //(?![a-z]|$)这个表达式表示:找到一个位置,这个位置不在任意字母左边([a-z]表示任意字母,前瞻表示表达式左边的位置)且也不能在结尾的左边

    负后顾示例:

    var str = 'a,1,b,2,c,3,'
    //把字符串改成 a=1,b=2,c=3,
    str.replace(/(?<!d),/g, '=');//"a=1,b=2,c=3,"
    //把非数字后面的,替换成=
    //(?<!d)这个表达式表示:找到一个位置,并且这个位置不在数字的后面
  • 相关阅读:
    18.10.29 考试总结
    【BZOJ】2730: [HNOI2012]矿场搭建
    BZOJ [ZJOI2007]仓库建设
    18.10.24 考试总结
    ZOJ 3740 Water Level
    洛谷 P2474 [SCOI2008]天平
    洛谷 P4180 【模板】严格次小生成树[BJWC2010]
    CF961E Tufurama
    18.10.22 考试总结
    18.10.19 考试总结
  • 原文地址:https://www.cnblogs.com/hellolol/p/11193582.html
Copyright © 2020-2023  润新知