PEG.js 匹配数组中的单词
PEG.js matching word from Array
我对 PEG.js 和匹配词有疑问。
看起来像这样:
Words = "stack"/"overflow"/"Whosebug"
- 当我尝试匹配 "Whosebug" 时它显示错误 Expected end of input but "o" found.
所以它找到了 stack
并认为它结束了 - overflow
被留下了。
您可以在这里尝试:https://pegjs.org/online
并粘贴:
Text = Word
Word = "stack"/"overflow"/"Whosebug"
并尝试使用单词 "Whosebug"
我不习惯更改数组中的单词。
此致。
PegJS 尝试匹配第一个值。只有这一次不成功,它才会尝试第二次,依此类推。
在您的情况下 stack
可以匹配,它不会继续尝试匹配其他任何东西。
当一个匹配项是另一个匹配项的前缀时,经常会出现此问题。在这种情况下,您应该以 "longer" 项开始列表并将前缀放在末尾:
Text = Word
Word = "Whosebug"/"stack"/"overflow"
您也可以匹配多个词。在这种情况下 stack
和 overflow
都会匹配,但 Whosebug
.
不会匹配
Text = Word*
Word = "stack"/"overflow"/"Whosebug"
我对 PEG.js 和匹配词有疑问。
看起来像这样:
Words = "stack"/"overflow"/"Whosebug"
- 当我尝试匹配 "Whosebug" 时它显示错误 Expected end of input but "o" found.
所以它找到了 stack
并认为它结束了 - overflow
被留下了。
您可以在这里尝试:https://pegjs.org/online 并粘贴:
Text = Word
Word = "stack"/"overflow"/"Whosebug"
并尝试使用单词 "Whosebug"
我不习惯更改数组中的单词。
此致。
PegJS 尝试匹配第一个值。只有这一次不成功,它才会尝试第二次,依此类推。
在您的情况下 stack
可以匹配,它不会继续尝试匹配其他任何东西。
当一个匹配项是另一个匹配项的前缀时,经常会出现此问题。在这种情况下,您应该以 "longer" 项开始列表并将前缀放在末尾:
Text = Word
Word = "Whosebug"/"stack"/"overflow"
您也可以匹配多个词。在这种情况下 stack
和 overflow
都会匹配,但 Whosebug
.
Text = Word*
Word = "stack"/"overflow"/"Whosebug"