使用文档文本上的regexp创建注释

时间:2016-11-23 22:06:38

标签: ruta

我正在尝试使用正则表达式注释json文档。我可以创建一个简单的注释来标记" JsonBlock"使用以下,但是,我似乎无法转身并使用该注释" JsonBlock"在循环中。

我的文档看起来像这样:

{ "Key": { "JsonBlock": { [ {"id":"123","value":"This is some multi-line long text..." }, {"id":"456","value":"This is some multi-line long text..." } ] } } }

这是一个简单的基于正则表达式的表达式,可以创建一个注释 ("([{\\s\"]*id.*?\\})")-> JsonBlock;

但是,为什么我不能使用以下内容迭代JsonBlock注释?我应该错过一些东西!

BLOCK(myBlock)JsonBlock{}{ }

除此之外,我还有另一个注释,表示id为" JsonBlockId",我试图使用PARTOF来检查JsonBlockId是否是JsonBlock的一部分,并且该规则似乎没有触发。我应该错过一些东西。

任何指针都将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

BLOCk不匹配,因为JsonBlock注释可见。

请注意,如果任何注释的开始偏移或结束偏移被任何不​​可见的注释覆盖,则所有注释都是不可见的。在您的示例中,这是BREAK和/或SPACE。

您可以通过更改正则表达式以不包含空格来解决问题,也可以使空格可见,或者您可以更改注释的偏移量以不包括空格。以下是后两种选择:

DECLARE JsonBlock;
"([{\\s\"]*id.*?\\})"-> JsonBlock;

RETAINTYPE(WS);
BLOCK(first) JsonBlock{}{
}
RETAINTYPE;


RETAINTYPE(WS);
JsonBlock{-> TRIM(WS)};
RETAINTYPE;

BLOCK(first) JsonBlock{}{
}

您的示例规则无效。我删除了括号。

DICLAIMER:我是UIMA Ruta的开发者