【问题标题】:Regex Capturing Group in Hugo雨果的正则表达式捕获组
【发布时间】:2020-12-14 13:47:15
【问题描述】:

最近我想将我的 static site generatorJekyll 切换到 Hugo。很喜欢Hugo,可惜有些功能的使用经常困扰着我。


考虑下面的代码,

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

结果:

id="demo"

预期结果

demo

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

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

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

请帮帮我,我确实花了很多时间搜索但仍然没有。我在Hugo-discourse找到了有同样问题的人,但是一年过去了,仍然没有答案。

【问题讨论】:

    标签: regex hugo hugo-shortcode


    【解决方案1】:

    最简单的方法是使用replaceRE,其中$1 是您的组号。

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

    【讨论】:

    • 感谢@modInfo,我决定选择你作为最佳答案,虽然你的答案没有延伸,但如果没有你的启发,我也不会发现更多,再次感谢!
    【解决方案2】:

    感谢@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/
    

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      相关资源
      最近更新 更多