我正在为项目使用pegjs解析器生成器,我很难创建一个语法,该语法应该匹配所有单词,直到它不应该匹配的单词集合。作为一个例子,在字符串“门是黄色的”我希望能够匹配所有单词,直到是,告诉pegjs解析器开始解析单词是。我希望解析器打破的单词集合是“is”“has”和“of”。
当前的语法规则如下:
subject "sub" =
s:[a-zA-Z ]+ { return s.join("").trim()}
如何创建一个前瞻,阻止解析器将我的集合包含在单词中?
(!of|is|has)
答案 0 :(得分:-1)
这将有效
.+(?=\s+(of|is|has))
它匹配一个或多个任何字符(换行符除外),直到遇到','是'或者'有' (通过积极的向前看)在他们面前有白色空间。