如何在 Ruta 脚本中匹配可选数字和字母数字

How to match optional Number along with alphanumeric in Ruta Script

我正在 Pega 中进行实体提取。我需要匹配一个包含 3 个部分的保单编号:

1) 可选 1 将是策略中的第一个字符。可选

2) 长度为 2 的字母数字后跟可选的连字符或 Space

3) 长度为 3 的字母数字

一些格式示例如下:

AB-CDE、AB-CDE、ABCDE、1AB-CDE

23-456、23456、23456、123456

AB-2B4、AB-B2C、A1-2B4、2A-34B、12A-34B、123-45C 等

每当保单编号以 2 位或 3 位数字开头或没有任何 space 或连字符时,我都会遇到问题。

例如 12A-34B、123-45C、23456、123456。

我写了下面的脚本:

PACKAGE uima.ruta.example;
Document{-> RETAINTYPE(SPACE)};


("1")+? ((NUM* W*)|(W* NUM*)){REGEXP(".{2}")} ("-"|SPACE)? ((NUM* W* NUM*)|(W* NUM* W*)){REGEXP(".{3}")->MARK(EntityType,1,4)};

((NUM* W*)|(W* NUM*)){REGEXP(".{2}")} ("-"|SPACE)? ((NUM* W* NUM*)|(W* NUM* W*)){REGEXP(".{3}")->MARK(EntityType,1,3)};

此代码适用于具有 space/hyphen 的模式,例如: AB-CDE、AB-CDE、1AB-CDE。但如果没有 space 并且连字符或模式以 2 或 3 位数字开头,则不起作用。

请帮忙写出正确的模式。 提前致谢。

UIMA Ruta种子注解NUM,覆盖全数。因此,像 23456123456 这样的例子不能被 Ruta 在子注释中拆分。

一个解决方案是使用纯正则表达式来注释所有提到的示例:

"\w{2,3}[\-|\s]?\w{2,3}" -> EntityType;