我在佩加做实体提取工作。我有要求与保单号码相匹配,该号码由以下3部分组成:
( 1)可选地,1将是政策的第一个字符。它是可选的
2)长度为2的字母数字,后面跟着可选的连字符或空格
3)长度为3的字母数字
因此,一些格式的示例如下:
ABCDE,ABCDE,ABCDE,1AB-CDE
23-456,23 - 456,23456,123456
AB-2B4、AB-B2C、A1-2B4、2A-34B、12A-34B、123-45C等。
每当策略号以2或3位数开始,或者它没有任何空格或连字符时,我就面临问题。
例如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)};这段代码适用于具有空格/连字符的模式: AB、AB、1AB-CDE。但如果没有空格,则不能工作,连字符或模式以2或3位数开始。
请帮助写正确的图案。提前谢谢。
发布于 2019-04-01 11:07:43
UIMA Ruta种子注释NUM涵盖了整个数字。因此,像23456、123456这样的例子不能在子注释中被Ruta分割。
一个解决方案是使用纯regexp对所有提到的示例进行注释:
"\\w{2,3}[\\-|\\s]?\\w{2,3}" -> EntityType;https://stackoverflow.com/questions/55355621
复制相似问题