使用Ruta,获取带注释的关键字的下一行中的数据

沙申帕塔克

如何获取其他行中存在于注释关键字上方/下方的数据?我可以注释关键字,但无法获取信息

示范文本:

Underwriter's Name    Appraiser's Name          Appraisal Company Name
Alice Wheaton Cooper  Bruce Banner               Stark Industries

TYPESYSTEM utils.PlainTextTypeSystem;
ENGINE utils.PlainTextAnnotator;

EXEC(PlainTextAnnotator, {Line});
ADDRETAINTYPE(WS);
Line{->TRIM(WS)};
REMOVERETAINTYPE(WS);
Document{->FILTERTYPE(SPECIAL)};

DECLARE UnderWriterKeyword, NameKeyword, UnderWriterNameKeyword;
DECLARE UnderWriterName(String label, String value);

CW{REGEXP("\\bUnderwriter") -> UnderWriterKeyword};
CW{REGEXP("Name")->NameKeyword};
(UnderWriterKeyword SW NameKeyword){->UnderWriterNameKeyword};
ADDRETAINTYPE(SPACE);
Line{CONTAINS(UnderWriterNameKeyword)} Line -> {
    (CW SPACE)+ {-> MARK(UnderWriterName)};
    };
REMOVERETAINTYPE(SPACE)

预期产量:

Underwriter's Name: Alice Wheaton Cooper    
Appraiser's Name: Bruce Banner
Appraisal Company Name: Stark Industries

请建议是否可以在RUTA中使用?如果为true,如何获取数据?

彼得·克鲁格
TYPESYSTEM utils.PlainTextTypeSystem;
ENGINE utils.PlainTextAnnotator;

DECLARE Header;
DECLARE ColumnDelimiter;
DECLARE Cell(INT column);

DECLARE Keyword (STRING label);
DECLARE Keyword UnderWriterNameKeyword, AppraiserNameLicenseKeyword,
AppraisalCompanyNameKeyword;

"Underwriter's Name" -> UnderWriterNameKeyword ( "label" = "UnderWriter
Name");
"Appraiser's Name/License" -> AppraiserNameLicenseKeyword ( "label" =
"Appraiser Name");
"Appraisal Company Name" -> AppraisalCompanyNameKeyword ( "label" =
"Appraisal Company Name");

DECLARE Entry(Keyword keyword);

EXEC(PlainTextAnnotator, {Line,Paragraph});

ADDRETAINTYPE(WS);
Line{->TRIM(WS)};
Paragraph{->TRIM(WS)};

SPACE[3,100]{-PARTOF(ColumnDelimiter) -> ColumnDelimiter};
Line -> {ANY+{-PARTOF(Cell),-PARTOF(ColumnDelimiter) -> Cell};};
REMOVERETAINTYPE(WS);

INT index = 0;
BLOCK(structure) Line{}{
    ASSIGN(index, 0);
    Line{STARTSWITH(Paragraph) -> Header};
    c:Cell{-> c.column = index, index = index + 1};
}

Header<-{hc:Cell{hc.column == c.column}<-{k:Keyword;};}
    # c:@Cell{-PARTOF(Header) -> e:Entry, e.keyword = k};

DECLARE Entity (STRING label, STRING value);
DECLARE Entity UnderWriterName, AppraiserNameLicense, AppraisalCompanyName;

FOREACH(entry) Entry{}{
    entry{ -> CREATE(UnderWriterName, "label" = k.label, "value" =
entry.ct)}<-{k:entry.keyword{PARTOF(UnderWriterNameKeyword)};};
    entry{ -> CREATE(AppraiserNameLicense, "label" = k.label, "value" =
entry.ct)}<-{k:entry.keyword{PARTOF(AppraiserNameLicenseKeyword)};};
    entry{ -> CREATE(AppraisalCompanyName, "label" = k.label, "value" =
entry.ct)}<-{k:entry.keyword{PARTOF(AppraisalCompanyNameKeyword)};};
}

最重要的规则如下:

Header<-{hc:Cell{hc.column == c.column}<-{k:Keyword;};}
    # c:@Cell{-PARTOF(Header) -> e:Entry, e.keyword = k};

它包含三个规则元素,Header#Cell,并以这种方式工作:

  • 规则开始与Cellrule元素匹配,因为它被标记为锚@
  • 此规则元素匹配Cell或不属于Header注释的所有注释。它从Cell满足此条件的第一个注释开始,并将其称为“ c”。
  • 下一个规则元素是#匹配的,直到下一个规则元素能够匹配。
  • Header如果内联规则能够在Header注释范围内匹配,则下一个规则元素与注释匹配内联规则Cell在此范围内与记为“ hc”注释匹配,这些注释的特征值相同column如果匹配包含Keyword记为“ k”的匹配项,则说明匹配成功
  • 如果这三个规则元素成功匹配,则将应用操作。
  • 第一个动作在Entry注释的跨度上创建一个称为“ e”的Cell注释。
  • 第二个操作将关键字分配给Entry功能keyword

概括而言,该规则为不属于标题的Entry每个Cell注释创建一个注释,并分配相应列的header关键字,以定义条目的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从使用(WHERE)条件选择的行中获取上一行和下一行

来自分类Dev

Vim:如何自动突出显示包含关键字的每一行?

来自分类Dev

如何使用scanf从下一行输入数据中获取输入?

来自分类Dev

Oracle:仅在关键字的第一行上输出“ Count by Partition by”

来自分类Dev

根据关键字分割一行(有拼写错误)

来自分类Dev

AWK:如何精确匹配并在同一行中的两个关键字之间打印多个单词

来自分类Dev

计算一行包含关键字的频率

来自分类Dev

在数据框的每一行中进行搜索时,如何从关键字列表中获取匹配的关键字?

来自分类Dev

如何从仅知道关键字的字符串中搜索一行,然后将其删除?

来自分类Dev

在列中查找关键字并将这些关键字添加到同一行的新列中

来自分类Dev

使用数据框中的关键字来检测另一个数据框或字符串中是否存在关键字

来自分类Dev

SonarQube挑剔?-“右花括号和下一个“ else”,“ catch”和“ finally”关键字应位于同一行”

来自分类Dev

使用自定义字体在下一行中强制长字

来自分类Dev

如何根据关键字/模式将一行文本拆分为多行?

来自分类Dev

仅打印在C中包含关键字的第一行和最后一行

来自分类Dev

从数据库中获取下一行

来自分类Dev

如何使用关键字从Pandas的列中删除行

来自分类Dev

JAVA使用关键字从.txt文件中删除一行

来自分类Dev

如何通过脚本在关键字或字符串之后在crontab中插入一行

来自分类Dev

匹配包含两个关键字的文本文件中的一行

来自分类Dev

半字在使用nsmutableattributedstring创建的下一行上

来自分类Dev

根据RUBY中的关键字删除文本文件中的一行

来自分类Dev

使用一个或多个单词作为搜索关键字匹配一行的正则表达式

来自分类Dev

如何提取一行中两个关键字之间出现的单词?

来自分类Dev

在文本中搜索关键字并为每个找到的关键字创建一个数据框列?

来自分类Dev

如何根据关键字获取数据

来自分类Dev

Xtext DSL 插件只提供文件第一行的关键字建议

来自分类Dev

如何在excel中找到带有某个关键字的最后一行

来自分类Dev

从 .txt 文件中打印出一行带有括号的关键字

Related 相关文章

  1. 1

    从使用(WHERE)条件选择的行中获取上一行和下一行

  2. 2

    Vim:如何自动突出显示包含关键字的每一行?

  3. 3

    如何使用scanf从下一行输入数据中获取输入?

  4. 4

    Oracle:仅在关键字的第一行上输出“ Count by Partition by”

  5. 5

    根据关键字分割一行(有拼写错误)

  6. 6

    AWK:如何精确匹配并在同一行中的两个关键字之间打印多个单词

  7. 7

    计算一行包含关键字的频率

  8. 8

    在数据框的每一行中进行搜索时,如何从关键字列表中获取匹配的关键字?

  9. 9

    如何从仅知道关键字的字符串中搜索一行,然后将其删除?

  10. 10

    在列中查找关键字并将这些关键字添加到同一行的新列中

  11. 11

    使用数据框中的关键字来检测另一个数据框或字符串中是否存在关键字

  12. 12

    SonarQube挑剔?-“右花括号和下一个“ else”,“ catch”和“ finally”关键字应位于同一行”

  13. 13

    使用自定义字体在下一行中强制长字

  14. 14

    如何根据关键字/模式将一行文本拆分为多行?

  15. 15

    仅打印在C中包含关键字的第一行和最后一行

  16. 16

    从数据库中获取下一行

  17. 17

    如何使用关键字从Pandas的列中删除行

  18. 18

    JAVA使用关键字从.txt文件中删除一行

  19. 19

    如何通过脚本在关键字或字符串之后在crontab中插入一行

  20. 20

    匹配包含两个关键字的文本文件中的一行

  21. 21

    半字在使用nsmutableattributedstring创建的下一行上

  22. 22

    根据RUBY中的关键字删除文本文件中的一行

  23. 23

    使用一个或多个单词作为搜索关键字匹配一行的正则表达式

  24. 24

    如何提取一行中两个关键字之间出现的单词?

  25. 25

    在文本中搜索关键字并为每个找到的关键字创建一个数据框列?

  26. 26

    如何根据关键字获取数据

  27. 27

    Xtext DSL 插件只提供文件第一行的关键字建议

  28. 28

    如何在excel中找到带有某个关键字的最后一行

  29. 29

    从 .txt 文件中打印出一行带有括号的关键字

热门标签

归档