【问题标题】:Is regex in liquid possible?正则表达式在液体中可能吗?
【发布时间】:2017-05-14 02:06:37
【问题描述】:

在我的 Shopify 页面上,我有一堆产品的描述中有奇怪的字符,我认为这些产品是从 CSV 导入的。逐个检查并手动删除这些字符将是太多的工作。

我有这个正则表达式脚本可以在客户端摆脱它们:

$(function() {
    var regex = /\?ÕÌ_|_Œ‚|[ŠŽÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝÞßðÿ_]/gi;

    $('.rte').html(function(i, oldHTML) {
        return oldHTML.replace(regex, ' ')
            .replace(/[^\x00-\x7F]|\?/g, '');
    });
});

但我想移动类似这个服务器端的东西,并可能用液体重新创建它。这甚至可能与液体有关吗?如何在服务器端使用这个正则表达式?

编辑:

我写了这个hacky代码

{{ product.description | replace: '?Íí_' | replace: 'Œæ' | replace: 'äó»íˆí_í‚_' | replace: 'í_Œ‚í__' | replace: '̴Ì_' | replace: '?ÕÌ_' | replace: '?í´íë_' | replace: 'Ì_åÇÌ__' | replace: 'åÊ' | replace: '?’«íëí__' | replace: '?í_ŒÇí_í‚_' | replace: 'í«í_' | replace: '?í?í__' | replace: '’Çíë_' | replace: 'íë_í«íˆíë__' | replace: 'íëí__’Çíëíæíëí___' | replace: '’Ç', '' }}

但这只有在我知道需要替换哪些特定字符串而不是像在我的 javascript 正则表达式中那样从一组字符串中搜索时才有效。

【问题讨论】:

    标签: regex shopify liquid


    【解决方案1】:

    您可以使用jekyll-regex-replace Ruby Gem 或write your own plugin if you need to tweak it further。如果这与它 100% 匹配,我不能 100% 确定您的用例,但是沿着这条线:

    1. 添加到您的_config.yml:
    plugins:
      ...
      - jekyll-regex-replace
    
    1. 在您的 Liquid 模板中:
    {{ product.description | regex_replace: '\?ÕÌ_|_Œ‚|[ŠŽÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝÞßðÿ_]', '' }}
    

    如果您使用的是限制 Jekyll 插件 (https://pages.github.com/versions/) 的主机,那么我只能建议转移到另一个不限制 Jekyll 插件的免费提供商,例如 GitLab, that's what I did as well

    1. 如果是 GitLab,您还需要添加到您的 Gemfile:
    group :jekyll_plugins do
      ...
      gem "jekyll-regex-replace", "~> 1.1.0"
    

    【讨论】:

      【解决方案2】:

      如果您的产品描述中有奇怪的字符,这些字符源自您的 CSV,为什么不清理您的 CSV,然后重新导入干净的描述文本?拯救自己的悲伤。删除奇怪的字符表明您弄乱了数据的编码。 UTF-8 是你的朋友。

      使用 Liquid 替换过滤器会为您工作,但那是 uber-hackey...最好找到错误的来源并修复它。删除这些字符将是有风险的,因为在某些情况下您可能会修复某些单词的显示,但在其他情况下仍然可能存在修改。

      请注意,Liquid 替换过滤器您可以在服务器端使用,它是您的正则表达式选项,即使它与通常的正则表达式功能相去甚远。

      【讨论】:

      • 这实际上并不能回答问题。
      • 是的,但@ByteSettlement 可能有一个XY Problem
      • 我目前不在这个位置,也没有时间修复 csv,这是一种临时修复,我将在稍后解决。
      • @david-lazar 请在主帖中查看我之前的评论和编辑
      • 谢谢 ti7。你看我正确回答问题的方式。不知道字节码从哪里得到这样评论的想法。我确实尽可能地回答了这些问题。 OP 的意图不是我的错。
      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多