内容中正则表达式替换的Jekyll筛选器?

内容中正则表达式替换的Jekyll筛选器?,jekyll,liquid,jekyll-extensions,Jekyll,Liquid,Jekyll Extensions,是否有使用正则表达式(regex)过滤器替换文本的Jekyll过滤器 我相信“内置”过滤器replace可以进行简单的字符串替换。如果没有(更好的)解决方案,我会加入一个非常简单的插件来完成这个任务-将它作为文件regex\u filter.rb放入你的\u plugins/文件夹中-它将regex作为字符串,作为第一个参数,替换为第二个参数(例如,{{page.url | replace_regex:'/$,'}}: module Jekyll module RegexFilter

是否有使用正则表达式(regex)过滤器替换文本的Jekyll过滤器


我相信“内置”过滤器
replace
可以进行简单的字符串替换。

如果没有(更好的)解决方案,我会加入一个非常简单的插件来完成这个任务-将它作为文件
regex\u filter.rb
放入你的
\u plugins/
文件夹中-它将regex作为字符串,作为第一个参数,替换为第二个参数(例如,
{{page.url | replace_regex:'/$,'}}

module Jekyll
  module RegexFilter
    def replace_regex(input, reg_str, repl_str)
      re = Regexp.new reg_str

      # This will be returned
      input.gsub re, repl_str
    end
  end
end

Liquid::Template.register_filter(Jekyll::RegexFilter)

如果您使用它来替换HTML,请确保将
re=Regexp.new reg_str
更改为
re=Regexp.new reg_str,4
,以便它匹配多行。@CooperMaruyama永远不要使用魔法常量如果同一行中有一个命名常量:==也有此GH问题中建议的解决方案:(虽然这里给出的解决方案更为完整)。不幸的是,这在GitHub页面中不起作用,因为出于安全原因,它们不运行用户插件。@CooperMaruyama如果要替换的节可能跨越多行而不是您需要的
Regexp::multiline