Я создаю выражение TokensRegex, предназначенное для захвата текста в форме «N Maple St» из «W Mullholland Drive». Текущее выражение таково:
{
ruleType: "tokens",
pattern: (/[A-Z]/ ([{ner:PERSON}|{tag:NNP}])+),
result: Concat($$0.text, "=", "STREET")
}
Тем не менее, это также захватывает текст, как "Honda Accord". Я определил макрос для всех марок автомобилей, подобный следующему:
$VEHICLES = "/[Hh]onda|[Tt]oyota/"
Я хочу включить отрицание макроса $ VEHICLES в выражение TokensRegex, т. Е. В приведенном выше разделе шаблона проверяется, соответствует ли текст, захваченный токенами {ner: PERSON} или {tag: NNP}, макросом $ VEHICLES. и, если это так, это НЕ верное совпадение.
Визуально
{
ruleType: "tokens",
pattern: (/[A-Z]/ ((([{ner:PERSON}|{tag:NNP}])&(!$VEHICLES))+),
// Matches the letter and the tokens and NOT anything in the macro.
// This pattern causes a ParseException when running CoreMapExpressionExtractor.createExtractorFromFile
// in my pipeline code.
result: Concat($$0.text, "=", "STREET")
}
Есть ли поддержка этой функции в TokensRegex?