| token | [] | 方括号包含单个标记。 | [] 任何单词或标点符号。 | | |
| token text | "" | 引号表示具有指定文本的标记。 | ["Grantor"] 包含单词”Grantor”的标记。 | | |
| variable | : | 冒号用于为其后的标记序列分配名称。**注意:**该变量仅在同一规则内可用,即直到右侧部分以分号结束为止。 | [t: "Contract"] 查找包含单词”Contract”的标记并将其分配给变量 t。 | | |
| lemma | L"word" Lemma"word" | 单词前的”L”或”Lemma”表示搜索应查找该单词的所有形式。 | [L"rule"] 将找到诸如”rule”、“rules”、“ruled”和”ruling”等标记。 | | |
| regular expression | /regular expression/ | 单个正斜杠包含正则表达式。与从正则表达式获取值搜索元素一样,使用 PCRE2 正则表达式语法。 | `/[1]?\d:\d2\s+(([ap].m.) | ([AP]M))?/` 该模板将匹配 12 小时格式的时间,例如”2:00 p.m.”、“9:34 AM”。 | |
| option setting for regular expressions | /regular expression/i | 选项设置可以放在结束正则表达式的正斜杠之后。例如,“i”选项表示正则表达式的不区分大小写匹配。 | /[1]?\d:\d{2}\s+([ap]\.?m\.?)?/i 此模板借助不区分大小写匹配简化了上面的示例。它将匹配 12 小时格式的时间,例如”2:00 p.m.”、“9:34 AM”。 | | |
| token predicates | <first_in_paragraph> | 标记是段落中的第一个。 | ["Section" <first_in_paragraph>] 单词”Section”开始该段落。例如,您可以使用此方法提取紧跟此标记之后的节号。 | | |
| token predicates | <punctuator> | 标记是标点符号。 | ["Tenant"] [<punctuator>]{0,2} 单词”Tenant”后面可以跟最多两个标点符号,例如右括号和逗号。 | | |
| token predicates | <initial_letter_capitalized> | 标记以大写字母开头。 | [L"agreement" <initial_letter_capitalized>] 此模板将匹配”Agreement”和”Agreements”,但不匹配”agreement”。 | | |
| token predicates | <mixed_capitalization> | 标记的部分字母(但不是全部)大写。 | [L"letter" <mixed_capitalization>] 例如,此模板将匹配”Letters”和”letteR”。 | | |
| token predicates | <all_letters_capitalized> | 标记全部为大写字母。 | [t: @NEROrganization <all_letters_capitalized>]+ 此模板将匹配以全大写形式书写的组织命名实体。 | | |
| logical OR | ` | ` | 竖线用于指定替代标记文本或标记的替代条件。 | `[“Lender" | "Co-Lender”] [“shall”] [“have”]` 此模板将匹配以下任一字符串:“Lender shall have”或”Co-Lender shall have” |
| logical AND | space | 空格用作标记条件的逻辑连接。 | [t: "Section" <first_in_paragraph>] 查找包含单词”Section”并且开始段落的标记。 | | |
| object condition | @object_name | at 符号(”@“)检查标记是否位于对象区域内。支持以下对象:命名实体对象,与作为专用搜索元素提供的类型相同,以”NER”为前缀:NERPerson、NEROrganization、NERAddress、NERLocation、NERDate、NERDuration、NERMoney;搜索元素;Sentence - 为文本流中的每个句子创建单独的对象;Paragraph - 为文本流中的每个段落创建单独的对象。 | [t: @NEROrganization]+ ["Lender"] 将名称 t 分配给包含 NEROrganization 实体且后跟关键字”Lender”的标记序列。 [t: @NERPerson @Preamble_Segment ]+ 在序言段中查找人名(由输入字段搜索元素表示)。 | | |
| separating similar objects | @object_name( same ) | ”same”表示在重复标记上,将同一对象匹配到标记序列,而不是此类型的多个对象。如果对象条件使用逻辑 OR,则不应使用”same”。 | 例如,如果您有一个人名列表依次排列,它们都将被检测为 NERPerson。要一次提取一个人的姓名,请使用”same”条件。 [t: @NERPerson( same )]+ 将名称 t 分配给找到的第一个人。 | | |
| relative position | @object_name( right_to( another_object )) @object_name( left_to( another_object )) | ”right_to”表示在括号中指定的 another_object 之后找到 object_name。“left_to”表示在括号中指定的 another_object 之前找到 object_name。 | [ t: @NERAddress( same, right_to( id1 ), left_to( id2 ) )] 查找 id1 和 id2 之间的 NERAddress 命名实体。 | | |
| logical OR (as used in object conditions) | ` | ` | 竖线也可以用作对象条件的逻辑析取。 | `[t: @NERPerson( right_to( id1 ) | right_to( id2 ) )]` 将名称 t 分配给位于 id1 之后或 id2 之后的人名。 |
| token sequence | space | 序列中的标记由空格分隔。 | ["Grantor"] [":"] 此模板将匹配”Grantor:“。即使这些单词不需要提取,也可以仅为上下文指定标记。 | | |
| 替代标记序列 | `[token1] | ([token2][token3])` | 使用竖线指定替代标记序列。圆括号设置优先级。 | `[“will”] ([“start”] | ([“take”] [“place”])) [“on”]此模板将匹配以下任一字符串:"will start on" 或 "will take place on"。请注意,如果省略括号,模板还会匹配 "will start place on"。括号确保 "take place" 短语要么完整出现,要么完全不出现。**注意:** 对于更复杂的实际替代标记序列情况,您可能会发现为每个替代项编写单独的规则更方便:[“will”] [“start”] [“on”] => …; [“will”] [“take”] [“place”] [“on”] => …;` |
| 可选标记 | []? | 问号表示该标记是可选的。 | ["Tenant"] ["."]? 单词 “Tenant” 后面可以跟一个句点。 | | |
| 可选重复标记 | []* | 星号表示该标记是可选的,并且可以重复多次。 | ["Grantor"] []* ["Tenant"] 关键字 “Grantor” 和 “Tenant” 之间可以由任意数量的标记分隔,也可以没有标记。 | | |
| 必需重复标记 | []+ | 加号表示该标记应至少出现一次,并且可以重复。 | [@NERPerson]+ 指定应找到人名,可能跨越多个标记,因为人名通常由多个单词组成。 | | |
| 指定重复次数的标记 | []{n,} []{n,m} | 花括号中的数字表示该标记应重复 n 到 m 次。如果未指定第二个数字,则该标记应至少重复 n 次。注意: 如您所见,{0,} 等同于 *,而 {1,} 等同于 +。 | ["Grantor"] []{1,3} ["Tenant"] 关键字 “Grantor” 和 “Tenant” 之间应由 1 到 3 个标记分隔。这可能比 * 更实用,因为您可以指定这两个关键字之间的距离不要太远。 | | |