zoukankan      html  css  js  c++  java
  • 关于node js 正则匹配markdown 图片的坑

    先说下场景,我想用正则匹配markdwon文件中的所有图片链接并返回

    测试文件内容

    # 测试
    ![image-20210301112347246](assets/image-20210301112347246.png)
    ![image-20210301135841577](assets/image-20210301135841577.png)
    ![image-20210301135841577](assets/image-1111111.png)
    ![image-20210301135841577](https://img2020.cnblogs.com/blog/1652001/202010/1652001-20201005161645036-1472277248.png)
    

    匹配的正则表达式

    /(?<=![.*]()(.+)(?=))/g
    

    分别测试exec,matchAll,match

    exec测试

    为啥先测试这个,因为最开始我用的就是这个,最后返回结果跟我使用在线工具匹配的结果不一致,

    测试代码

    let content = fs.readFileSync('../test.md').toString();
    let pattern = /(?<=![.*]()(.+)(?=))/g;
    console.log('exec', pattern.exec(content));
    

    结果

    image-20210302105010299

    明显不对

    matchAll测试

    let content = fs.readFileSync('../test.md').toString();
    let pattern = /(?<=![.*]()(.+)(?=))/g;
    //console.log('exec', pattern.exec(content));
    
    console.log('matchAll', ...content.matchAll(pattern));
    

    image-20210302105137450

    更不对了

    match测试

    let content = fs.readFileSync('../test.md').toString();
    let pattern = /(?<=![.*]()(.+)(?=))/g;
    //console.log('exec', pattern.exec(content));
    //console.log('matchAll', ...content.matchAll(pattern));
    console.log('match', content.match(pattern));
    

    image-20210302105248598

    这次对了

  • 相关阅读:
    BZOJ 1021 循环的债务
    BZOJ 1019 汉诺塔
    BZOJ 1018 堵塞的交通
    BZOJ 1017 魔兽地图
    BZOJ 1016 最小生成树计数
    Luogu 3008 [USACO11JAN]道路和飞机Roads and Planes
    Luogu 3625 [APIO2009]采油区域
    Luogu 4139 上帝与集合的正确用法
    Luogu 3629 [APIO2010]巡逻
    Luogu 3626 [APIO2009]会议中心
  • 原文地址:https://www.cnblogs.com/makalochen/p/14467834.html
Copyright © 2011-2022 走看看