(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください) パーサコンビネータなる素敵なものを見つけたので使って検索クエリのパースをしてみました。そのとき、理解するのに時間がかかったのでメモを残しておきます(公式のサンプルのわかりづらさが原因で1時間ほど無駄にしてしまいました)。 ※追記あり const Parsimmon = require('parsimmon'); const regex = Parsimmon.regex; const lazy = Parsimmon.lazy; const or = regex(/\sor\s/i).result('or'); const and = regex(/(?:\s|\sand\s)/i).result('and'); const not = regex(/\s-(?:\w+)/i)

