PEG.js 匹配数组中的单词

Fil*_*279 2 javascript peg

我对 PEG.js 和匹配单词有疑问。

它看起来像这样: Words = "stack"/"overflow"/"stackoverflow"- 当我尝试匹配“stackoverflow”时,它显示错误Expected end of input but "o" found.,因此它发现stack并认为它已经结束 -overflow被留下。

您可以在这里尝试: https: //pegjs.org/online 并粘贴:

Text = Word Word = "stack"/"overflow"/"stackoverflow"并尝试使用单词“stackoverflow”

我不习惯改变数组中的单词。

此致。

Sir*_*rko 5

PegJS 尝试匹配第一个值。只有当这不成功时,它才会尝试第二个,依此类推。由于您的情况stack可以匹配,因此它不会继续尝试匹配其他任何内容。

当一个匹配项是另一个匹配项的前缀时,经常会出现此问题。在这种情况下,您应该以“较长”术语开始列表,并将前缀放在末尾:

Text = Word
Word = "stackoverflow"/"stack"/"overflow"
Run Code Online (Sandbox Code Playgroud)

您还可以匹配多个单词。在这种情况下,stackoverflow都会匹配,但 不会匹配stackoverflow

Text = Word*
Word = "stack"/"overflow"/"stackoverflow"
Run Code Online (Sandbox Code Playgroud)