Предыдущий ответ является неправильным для вопроса ОП, так как он будет соответствовать любой последовательности отдельных символов вплоть до любого прилагательного. Поэтому, если вы видите строку xyzgood, она будет соответствовать xyz, а следующее правило будет соответствовать «хорошей» части в качестве прилагательного. Аналогично, правило прилагательного в ОП будет соответствовать первым трем символам «значка» как прилагательному «плохо», а это не то, что они хотят.
Вместо этого правило прилагательного должно выглядеть примерно так:
rule adjective
a:("good" / "bad" / "excellent") ![a-z] {
def content
[:adjective, a.text_value]
end
}
end
и правило not_adjective, подобное этому:
rule not_adjective
!adjective w:([a-z]+) {
def content
[:not_adjective, w.text_value]
end
}
end
включает обработку в верхнем регистре, переносов, апострофов и т. Д., Если необходимо. Конечно, вам также понадобится обработка пробелов.