我有一些markdown文本,其中包含图像引用,但它们是相对路径,我需要使用NodeJS脚本将其修改为绝对路径。有什么方法可以通过简单的方式实现相同目的吗?
示例:
来源
![](myImage.png?raw=true)
结果
![](www.example.com/myImage.png?raw=true)
markdwon内容中有多个图像需要修改。
答案 0 :(得分:0)
检查以下工作示例:https://repl.it/repls/BlackJuicyCommands
首先,您需要使用library(tidyverse)
data %>%
group_by(X, Y) %>%
summarise(AvgBurntArea = mean(area)) %>%
ggplot(aes(X, Y)) +
geom_tile(aes(fill = AvgBurntArea))
读取文件并将fs.readFile()
解析为Buffer
。
现在您可以访问文件的文本,您需要用新的图像路径替换每个图像路径。捕获它的一种方法是使用regular expression。例如,您可以寻找string
。我们只对替换](ANY_IMAGE_PATH.ANY_IMAGE_EXTENSION
部分感兴趣。
正则表达式的一个示例可能是(可以改进!)(请参见https://regex101.com/r/xRioBq/1,查看它的实际作用):
ANY_IMAGE_PATH
这将查找文字const regex = /\]\((.+)(?=(\.(svg|gif|png|jpe?g)))/g
,后跟文字]
,后跟任意序列(即(
),直到找到文字.+
,后跟{ {1}},.
,svg
或gif
/ png
。正则表达式后的jpeg
是匹配所有事件(不仅是第一个事件)所必需的。
Javascript / node(<版本9)does not support lookbehind。我使用的正则表达式在图像路径之前包含jpg
,然后稍后将其过滤掉(或者您可以使用更复杂的正则表达式)。
g
将图像路径捕获为一组。然后,您可以使用字符串的替换功能。 replace函数接受正则表达式作为第一个参数。第二个参数可以是一个函数,它接收完全匹配(在这种情况下为](
,然后将所有捕获的组作为以下参数作为第一个参数)。
使用节点模块(.+)
或](image_path_without_extension
更改url并返回捕获的组(在我称为参数path
的下面)。因为我们还将替换url
,所以它应该包含在返回值中。
imagePath
See the repl example to see it live in action.注意:在repl示例中,它被写入另一个文件。如果要覆盖,请使用相同的文件名。