关于Hexo和Hugo
它们算是同类型的竞争对手吧,都是静态网站生成工具
Hexo使用Nodejs语言开发,Hugo则是Golang语言开发
体验上都挺不错的
正文
他们两者都是使用markdown写文章,文章文件只有开头的配置格式不同,文章内容是不用改动的,所以在两者转换是比较简单的
hexo的文章
--- title: 文章标题 date: 2020-02-02 16:00:00 tags: - 标签1 - 标签2 post_url: 文章链接.html --- markdown文章内容 ……
hugo的文章
--- title: 文章标题 date: 2020-02-02T16:00:00+08:00 tags: [标签1,标签2] url: 文章链接.html --- markdown文章内容 ……
以上内容中的post_url
和url
是我自定义的文章链接,hexo的post_url
需要在hexo的主配置中的permalink
引用,hugo则不需要,如果有url
这个配置,就自动将其设置为文章url
主要是两点,时间的格式和标签的格式
正则匹配时间
hexo和hugo两者相同的地方是2020-02-02以及16:00:00
匹配规则(hexo和hugo通用)
$1是2020-02-02
$2是16:00:00
^date: (\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}:\d{2}).*$
替换规则
hexo
date: $1 $2
hugo
date: $1T$2+08:00
正则匹配标签
关于标签的匹配,由于对于正则,我就是个半吊子,所以结果并不是算很完美。不过也能完成需求
我文章的标签数基本在1到3个,我是按照1~4个匹配的
匹配规则
$2是第一个标签
$4是第二个标签
$6是第三个标签
$8是第四个标签
hexo
^tags:.*$(\n- (\S)*$)?(\n- (\S)*$)?(\n- (\S)*$)?(\n- (\S)*$)?
hugo
^tags: \[((\S*?))(,+(\S*?))?(,+(\S*?))?(,+(\S*?))?(,+(\S*?))?\]
替换规则
hexo
tags: \n- $2\n- $4\n- $6\n- $8
hugo
tags: [$2,$4,$6,$8]
这里匹配规则没有问题,替换规则是有问题的。当标签数不够4个的适合后面会有空的标签,所以需要判断一下$2 $4 $6 $8是否为空再进行替换
当然,也可以直接替换上去,再删除后面多出来的空标签。
如果用上面这个规则,替换后的标签是这样的
hexo
第一种情况:
tags: - - - -
第二种情况:
tags: - 标签1 - - -
第三种情况:
tags: - 标签1 - 标签2 - -
第四种情况:
tags: - 标签1 - 标签2 - 标签3 -
第五种情况:
tags: - 标签1 - 标签2 - 标签3 - 标签4
hugo
第一种情况:
tags: [,,,]
第二种情况:
tags: [标签1,,,]
第三种情况:
tags: [标签1,标签2,,]
第四种情况:
tags: [标签1,标签2,标签3,]
第五种情况:
tags: [标签1,标签2,标签3,标签4]
两者的前四种情况都是有问题的
hexo
匹配规则
^tags: ((\n- \S+$)*)(\n-\s*$)*
替换规则
tags: $1
hugo
匹配规则
^tags: \[(.*?),+\]
替换规则
tags: [$1]
至此似乎就完成了
我的还有个post_url
和url
需要对换一下,这个相对之下简单多了
当然也可以把hexo中的post_url
更改为和hugo一样的url
,就连这一步都省略了
匹配规则
^(post_)?url:
替换规则
hexo
post_url:
hugo
url: