• 欢迎访问好鸭,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏好鸭吧

关于使用正则匹配对Hexo和Hugo文章互换迁移

建站 haoduck 5个月前 (10-30) 26次浏览 0个评论

关于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_urlurl是我自定义的文章链接,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_urlurl需要对换一下,这个相对之下简单多了

当然也可以把hexo中的post_url更改为和hugo一样的url,就连这一步都省略了

匹配规则
^(post_)?url:
替换规则
hexo
post_url:
hugo
url:


好鸭 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于使用正则匹配对Hexo和Hugo文章互换迁移
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址