首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ruta脚本中匹配可选数字和字母数字

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

Stack Overflow用户
提问于 2019-03-26 11:05:13
回答 1查看 97关注 0票数 0

我在佩加做实体提取工作。我有要求与保单号码相匹配,该号码由以下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.

我写了以下脚本:

代码语言:javascript
复制
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位数开始。

请帮助写正确的图案。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-01 11:07:43

UIMA Ruta种子注释NUM涵盖了整个数字。因此,像23456、123456这样的例子不能在子注释中被Ruta分割。

一个解决方案是使用纯regexp对所有提到的示例进行注释:

代码语言:javascript
复制
"\\w{2,3}[\\-|\\s]?\\w{2,3}" -> EntityType;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55355621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档