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

    这次对了

  • 相关阅读:
    leetcode_138复制带随机指针的链表
    minSTL
    LLVM
    STL基础_迭代器
    mysql数据库表清空后id如何从1开始自增
    explain用法和结果分析
    MySQL多表查询与子查询
    数据结构与算法笔记
    MySQL数据库的SQL语言与视图
    mysql忘记密码解决方案
  • 原文地址:https://www.cnblogs.com/makalochen/p/14467834.html
Copyright © 2011-2022 走看看