正则表达式 – 将内联链接转换为引用

前端之家收集整理的这篇文章主要介绍了正则表达式 – 将内联链接转换为引用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用 Github’s markdown格式化的changelog文件.

最初我为需要添加的每个链接使用内联链接,即:

This is some [example](http://www.stackoverflow.com) line of text.

随着时间的推移,随着文件大小的增加,它变得有点乱,主要是因为这种插入链接的方式.

我想将所有链接从内联转换为引用(参见description of each),即将上面的行转换为:

This is some [example][1] line of text.

[1]: http://www.stackoverflow.com

由于文件相当大并且包含许多内联链接,我想知道是否有一些自动化的方法来执行此操作.我使用Sublime Text 3进行编辑,但是我找不到适合此任务的包.也许一些聪明的正则表达式?

这是一个很好的要求!

我刚刚在GitHub上创建了一个新的Node.js程序(我知道它不是一个GUI,但似乎有更多人想要的功能).

这里也是代码

// node main.js test.md result.md

var fs = require('fs')
fs.readFile(process.argv[2],'utf8',function (err,markdown) {
    if (err) {
        return console.log(err);
    }
    var counter = 1;
    var matches = {};
    var matcher = /\[.*?\]\((.*?)\)/g;
    while (match = matcher.exec(markdown)) {
        if (!matches[match[1]]) matches[match[1]] = counter++;
    }
    console.log(matches);
    Object.keys(matches).forEach(function(url) {
        var r = new RegExp("(\\[.*?\\])\\(" + url + "\\)","g");
        markdown = markdown.replace(r,"$1[" + matches[url] + "]");
        markdown += "\n[" + matches[url] + "]: " + url;
    });

    fs.writeFile(process.argv[3],markdown,function (err) {
        if (err) return console.log(err);
    });

});

猜你在找的正则表达式相关文章