我正在尝试使用正则表达式注释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的一部分,并且该规则似乎没有触发。我应该错过一些东西。
任何指针都将不胜感激。 谢谢!
答案 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的开发者