在文档文本上使用正则表达式创建注释
Create annotation using regexp on document text
我正在尝试使用正则表达式注释 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 的一部分并且该规则似乎没有触发。我应该遗漏了什么。
如有任何指点,我们将不胜感激。
谢谢!
BLOCk 不匹配,因为 JsonBlock
注释可见。
请注意,如果所有注释的开始偏移量或结束偏移量被任何不可见注释覆盖,则所有注释都是不可见的。在您的示例中,这是 BREAK and/or SPACE.
您可以通过更改正则表达式以不包含空格来解决此问题,或者您可以使空格可见,或者您可以更改注释的偏移量以不包含空格。以下是后两个选项:
DECLARE JsonBlock;
"([{\s\"]*id.*?\})"-> JsonBlock;
RETAINTYPE(WS);
BLOCK(first) JsonBlock{}{
}
RETAINTYPE;
RETAINTYPE(WS);
JsonBlock{-> TRIM(WS)};
RETAINTYPE;
BLOCK(first) JsonBlock{}{
}
您的示例规则无效。我去掉了括号。
免责声明:我是 UIMA 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 的一部分并且该规则似乎没有触发。我应该遗漏了什么。
如有任何指点,我们将不胜感激。 谢谢!
BLOCk 不匹配,因为 JsonBlock
注释可见。
请注意,如果所有注释的开始偏移量或结束偏移量被任何不可见注释覆盖,则所有注释都是不可见的。在您的示例中,这是 BREAK and/or SPACE.
您可以通过更改正则表达式以不包含空格来解决此问题,或者您可以使空格可见,或者您可以更改注释的偏移量以不包含空格。以下是后两个选项:
DECLARE JsonBlock;
"([{\s\"]*id.*?\})"-> JsonBlock;
RETAINTYPE(WS);
BLOCK(first) JsonBlock{}{
}
RETAINTYPE;
RETAINTYPE(WS);
JsonBlock{-> TRIM(WS)};
RETAINTYPE;
BLOCK(first) JsonBlock{}{
}
您的示例规则无效。我去掉了括号。
免责声明:我是 UIMA Ruta 的开发者