我正在研究基本的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)};
关于如何解决此问题的任何想法?
干杯。
答案 0 :(得分:0)
考虑到所描述的情况,您希望输出的货币符号(即USD)和金额(即54)为整数。在Ruta中,您可以将这种结构作为具有功能Currency
和symbol
的单个注释amount
处理:
DECLARE Currency (STRING symbol, INT amount);
INT value;
(s:W{REGEXP("USD", true)} NUM{PARSE(value)}){-> CREATE(Currency, "symbol"=s.ct, "amount"=value)};
由于54
是NUM
注释,因此必须将其解析为INT
并存储为value
变量。同样,要获取符号注释W
的字符串值,我们传递以标签s.ct
引用的W
的覆盖文本(即s
)。
现在,您无需在下游应用程序中进行任何字符串操作即可访问功能。