Если это Pega
, попробуйте это
PACKAGE uima.ruta.example;
DECLARE VarA;
DECLARE VarB;
DECLARE VarC;
W{REGEXP("Q|QI") -> MARK(VarA)}
(WS|"-")?
NUM{REGEXP(".{1,7}")-> MARK(VarB)}
(WS|"-")?
W{REGEXP(".{1,3}")-> MARK(VarC),MARK(EntityType,5,5), UNMARK(VarA), UNMARK(VarB), UNMARK(VarC)};
Объяснение: -
(WS|"-")?
: - Пробел или "-".Вы можете удалить ?
, если одно из них является фиксированным.
NUM{REGEXP(".{1,7}")
: - число от 1 до 7.
W{REGEXP(".{1,3}")
: - заглавная буква от 1 до 3.
MARK(EntityType,5,5)
: - маркировка только 5-го ряда.то есть W{REGEXP(".{1,3}")
.Если вы отметите MARK(EntityType,1,5)
, то вернется Q-123456-PAD
.