Ruta,确定模式并返回其中的一部分

时间:2019-10-24 01:05:48

标签: ruta

我正在研究基本的ruta脚本。我的目标是确定一种模式,比方说一个货币金额,但只返回其数值。 例如,文字可能是“我为新鞋支付了54美元”。我想标识“ USD54”,以便确保它是货币值而不是数量,但我想从脚本中获取“ 54”,以便在下游应用程序中将其用作数字。

我所有的脚本都采用下面的结构,虽然很好,但它返回的是USD54,而不仅仅是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)};

关于如何解决此问题的任何想法?

干杯。

1 个答案:

答案 0 :(得分:0)

考虑到所描述的情况,您希望输出的货币符号(即USD)和金额(即54)为整数。在Ruta中,您可以将这种结构作为具有功能Currencysymbol的单个注释amount处理:

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.ct引用的W的覆盖文本(即s)。

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