【发布时间】:2016-02-28 23:55:31
【问题描述】:
我有以下示例文本:
拉链 20193
纽约
美国
我想做的是只匹配“纽约”,即邮政编码后的行。
我尝试使用此代码,但它不起作用 -
声明标题; pin BREAK #{-> MARK(heading)} BREAK;
(在此之前我已经声明了pin)。
请告诉我该怎么做。
谢谢!
【问题讨论】:
我有以下示例文本:
拉链 20193
纽约
美国
我想做的是只匹配“纽约”,即邮政编码后的行。
我尝试使用此代码,但它不起作用 -
声明标题; pin BREAK #{-> MARK(heading)} BREAK;
(在此之前我已经声明了pin)。
请告诉我该怎么做。
谢谢!
【问题讨论】:
问题可能是过滤设置。 BREAK 默认是不可见的。它永远不会成功匹配,因为 ruta 会自动跳过换行符。
尝试在您的规则前面添加另一个更改过滤设置的规则:
RETAINTYPE(BREAK);
pin BREAK #{-> MARK(heading)} BREAK;
可能还有另一个问题,因为 BREAK 代表 \n 和 \r。因此,该规则不适用于 windows 行结尾。你需要类似的东西:
pin BREAK[1,2] #{-> MARK(heading)} BREAK;
ruta 中有一个用于注释行的 utils 分析引擎:PlainTextAnnotator 如果包含它,则可以编写如下内容:
pin Line{-> heading};
(您可能需要修剪线条,例如,如果线条以空格开头或结尾,则使用 TRIM 操作)
免责声明:我是 UIMA Ruta 的开发人员
【讨论】: