【问题标题】:Regex match between Hugo tagsHugo标签之间的正则表达式匹配
【发布时间】:2021-08-24 20:05:12
【问题描述】:

我有一个像这样的 Hugo 标签:

{{< ref posts/filename >}}

filename 是一个变量,是我想要留下的那个位。

到目前为止,我得到了这个:

/\{\{\< (.*?) \>\}\}\)/

剩下的就是:

ref posts/filename

但我不知道如何删除文件名之前的其余部分

【问题讨论】:

  • 通过匹配到/? /\{\{<[^>\/]*\/(.*?) >\}\}\)/?
  • 传奇!太感谢了。如果您想将其发布为答案,我会将其标记为已接受。
  • 我从答案中的模式末尾删除了\),因为您没有提供带有尾随圆括号的示例输入。
  • 啊,是的。道歉。整个内容应该用括号括起来,所以我的输入实际上看起来像 ({{}})。发现得好。无论哪种方式,您的回复都有效。编辑:我错了。它没有用括号括起来。但是在我删除关闭后你的答案仍然有效)。
  • 很遗憾,我没有在您的评论旁边看到复选标记。可能是因为我没有获得足够的分数来接受答案吗?

标签: regex hugo re2


【解决方案1】:

您可以匹配除>/ 之外的任何字符,直到{{< 部分中的第一个/

\{\{<[^>\/]*\/(.*?) >\}\}

请参阅regex demo

详情

  • \{\{&lt; - {{&lt; 子字符串
  • [^&gt;\/]* - 除了&gt;/ 之外的零个或多个字符
  • \/ - 一个 / 字符
  • (.*?) - 第 1 组:除换行符之外的任何零个或多个字符,尽可能少
  • &gt;\}\} - &gt;}} 子字符串。

regex graph

【讨论】:

    【解决方案2】:
    (?<=\/)[^ ]*(?=[ >])
    

    剩下的就是:

    filename
    

    工作示例: https://regex101.com/r/oSBW4q/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多