Liquid语法错误:含右大括号的正则未正确终止,求转义方法
在Liquid中转义正则表达式里的右大括号(})的方法
反斜杠直接转义:在正则里的
}前添加单个反斜杠\,但注意在Ruby字符串中需要用双反斜杠\\(因为Ruby会先解析一次转义):Liquid::Template.parse("{{ str | regex: 'any regex with \\}' }}")这样Liquid会把
\}识别为普通的右大括号字符,而非模板标签的结束符。使用raw标签包裹:如果正则里有多个特殊Liquid语法字符,用
{% raw %}和{% endraw %}包裹正则内容,强制Liquid不解析其中的语法:Liquid::Template.parse("{{ str | regex: '{% raw %}any regex with }{% endraw %}' }}")包裹范围内的所有字符都会被当作普通文本处理,包括
}。提前定义正则变量:在模板外部先定义好包含
}的正则字符串,再插入到模板中:target_regex = "any regex with }" Liquid::Template.parse("{{ str | regex: '#{target_regex}' }}")这种方式避免了在模板字符串中直接书写冲突字符,彻底规避语法解析问题。
内容的提问来源于stack exchange,提问作者Felix-Mihai Prava
相关产品推荐
相关产品推荐

