0

最近我想将我的静态站点生成器Jekyll切换到 Hugo。我真的很喜欢Hugo,但不幸的是,某些功能的使用经常困扰我。


考虑下面的代码,

{{ $my_var := `id="demo"` }}
{{ $my_slice := (findRE `id=\"(.*)\"` $my_var 1) }}
{{ index $my_slice 0 }}

结果:

id="demo"

预期结果

demo

在上面的例子中,我想获取组的值。

请注意,真正需要的是获取组的常规表示,而不是其他功能的棘手使用(例如用空格替换id="类似的东西)

正则表达式测试网站:https ://regex101.com/

在此处输入图像描述

请帮助我,我真的花了很多时间搜索但仍然没有。我在Hugo-discourse中找到了一个有同样问题的人,但是已经一年了,仍然没有答案。

4

2 回答 2

1

最简单的方法是使用replaceRE$1您的组号在哪里。

{{ $my_var := `id="demo"` }}
{{ $result := replaceRE `id=\"(.*)\"` "$1" $my_var }}
{{ $result }} → "demo"
于 2020-12-13T23:22:43.590 回答
0

感谢@modInfo的启发,我决定扩展replaceRE的答案

按命令

{{ $my_var := `id="demo"` }}
{{ $result := replaceRE `id=\"(.*)\"` "$1" $my_var }}
{{ $result }} → "demo"

名称组

{{ $my_var := `id="demo2"` }}
{{ $result := replaceRE `id=\"(?P<my_id>.*)\"` "$my_id" $my_var }}
{{ $result }} → "demo2"

更多示例

{{ $my_var := `<h2 id="#demo+1-3%./2\"><a href="https://www.google.com/"></a></h2>` }}
{{ $id := replaceRE `.*id=\"(?P<my_id>([:#a-z0-9+\-%./\\])*)\">(<a href=\"(?P<my_href>[:#a-z0-9+\-%./\\]*)\">.*)?` "$my_id" $my_var }}
{{ $id }}  → #demo+1-3%./2\
{{ $href := replaceRE `.*id=\"(?P<my_id>([:#a-z0-9+\-%./\\])*)\">(<a href=\"(?P<my_href>[:#a-z0-9+\-%./\\]*)\">.*)?` "$my_href" $my_var }}
{{ $href }}  → https://www.google.com/
于 2020-12-14T05:47:15.223 回答