2016-11-23 31 views
1

我想用正则表达式注释一个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..." } ] } } }

下面是一个简单的基于正则表达式创建一个annotaiton ("([{\\s\"]*id.*?\\})")-> JsonBlock;

但是,使用我为什么不能遍历JsonBlock注解以下?我应该错过一些东西!

BLOCK(myBlock)JsonBlock{}{ }

除此之外过,我表示ID为“JsonBlockId”另一个注解,我曾尝试使用PARTOF以检查JsonBlockId是JsonBlock的一部分,该规则似乎并不火。我应该错过一些东西。

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

回答

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鲁塔开发商

+0

哇!彼得,非常感谢你,我感谢你的意见,这有助于我理解文档的意思是“开始偏移还是结束偏移被......覆盖” - 我无法建立连接(我确实使用UIMA很多位)。 – user3119935