如何在 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,覆盖全数。因此,像 23456
、123456
这样的例子不能被 Ruta 在子注释中拆分。
一个解决方案是使用纯正则表达式来注释所有提到的示例:
"\w{2,3}[\-|\s]?\w{2,3}" -> EntityType;
我正在 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,覆盖全数。因此,像 23456
、123456
这样的例子不能被 Ruta 在子注释中拆分。
一个解决方案是使用纯正则表达式来注释所有提到的示例:
"\w{2,3}[\-|\s]?\w{2,3}" -> EntityType;