【问题标题】:Regex to avoid all words between {{ and }}正则表达式避免 {{ 和 }} 之间的所有单词
【发布时间】:2021-12-14 00:57:53
【问题描述】:

我正在使用https://github.com/tbroadley/spellchecker-cli。

我有一个 JSON 文件,我想在其上运行 spellChecker,它看起来像这样:

{
  "abc.editGroupsMaxLengthError": "Maximum {{charLen}} characters"
}

我想知道{{ 和}} 之间的所有单词如何被拼写检查器忽略。

我试过了

[A-Za-z]+}}

如此处所述 https://github.com/tbroadley/spellchecker-cli#ignore-regexes 忽略正则表达式。

但由于某种原因,它似乎没有使用}} 或{{。

如何解决这个问题?

【问题讨论】:

  • 在正则表达式中,大括号有特殊的含义。要表示文字,您需要使用反斜杠对其进行转义。
  • 这似乎忽略了只有 {{}} 之外的字母的不正确拼写以及@WiktorStribiżew
  • 这听起来像是文本首先被预标记。正则表达式引擎“看到”/得到什么输入?
  • @WiktorStribiżew 您能否详细说明正则表达式引擎“看到”/得到什么输入?
  • 很可能有一天你会得到帮助here。工具增强后,请参阅this:“字典旨在忽略单个单词,而不是更长的文本块。”

标签: regex spell-checking spelling


【解决方案1】:

您可以使用<!-- spellchecker-disable --> / <!-- spellchecker-enable --> 标签包装您的{{...}} 子字符串,请参阅this Github issue。

所以,请确保您的 JSON 看起来像

{
  "abc.editGroupsMaxLengthError": "Maximum <!-- spellchecker-disable -->{{charLen}}<!-- spellchecker-enable --> characters"
}

结果会是

C:\Users\admin\Documents\1>spellchecker spellchecker -f spellchecker_test.json
Spellchecking 1 file...

spellchecker_test.json: no issues found

要将 {{...}} 字符串包装在 Windows 中的某个文件中,您可以使用 PowerShell,例如,对于 spellchecker_test.json 文件:

powershell -Command "& {(Get-Content spellchecker_test.json -Raw) -replace '(?s){{.*?}}','<!-- spellchecker-disable -->$&<!-- spellchecker-enable -->' | Set-Content spellchecker_test.json}"

在 *nix 中,Perl 更可取:

perl -0777 -i -pe 's/\{\{.*?}}/<!-- spellchecker-disable -->$&<!-- spellchecker-enable -->/s' spellchecker_test.json

【讨论】:

  • JSON文件中的值是用来替换web应用上的文本的,不能加
  • @SKhurana 那么你就卡住了,必须等到 Github 问题 #79 得到解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2015-08-13
  • 1970-01-01
  • 2021-01-20
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多