鲁塔,识别图案并返回一部分



我正在编写一个基本的ruta脚本。我的目标是识别一个模式,比如说一个货币金额,但只返回它的数值。例如,文本可以是"我为我的新鞋支付了54美元"。我想确定"USD54",这样我就可以确定它是一个货币价值,而不是一个数量,但我想从我的脚本中只得到"54",以便在我的下游应用程序中可以将其用作数字。

我所有的脚本都是像下面这样的结构,这很好,但它返回的是54美元,而不仅仅是54美元。

PACKAGE uima.ruta.example;
DECLARE VarA;
DECLARE VarB;
// 2 capital letters and any number of digits
// Example USD5 , USD6700
// 
CAP{REGEXP("USD") -> MARK(VarA)}
NUM{ -> MARK(VarB),MARK(EntityType,1,2)};

你知道怎么解决这个问题吗?

干杯。

考虑到所描述的场景,您希望将货币符号(即美元(和金额(即54(作为整数输出。在Ruta中,您可以将此结构处理为具有symbolamount:功能的单个注释Currency

DECLARE Currency (STRING symbol, INT amount);
INT value;
(s:W{REGEXP("USD", true)} NUM{PARSE(value)}){-> CREATE(Currency, "symbol"=s.ct, "amount"=value)};

由于54NUM注释,因此必须将其解析为INT并存储为value变量。类似地,为了获得符号注释W的字符串值,我们传递用标签s引用的W的覆盖文本(即s.ct(。

现在,您可以访问这些功能,而无需在下游应用程序中进行任何字符串操作。

相关内容

最新更新