跳转到主要内容
对于每个搜索元素,Extraction Rules 活动中的代码包含一系列按顺序执行的规则。每条规则由两个部分组成,并以分号结尾:
左侧部分
=>
右侧部分;
左侧用于检查条件或查找满足条件的值。右侧用于创建新的搜索元素实例并将这些值分配给它们。

示例

下面的简单规则会查找包含关键字“Contract”的搜索元素 kw_Contract
[ t: "Contract" ] // 查找单词"Contract"并将该标记赋值给名为 t 的新变量
=>
kw_Contract( t ); // 每次重复出现单词"Contract"时创建一个新的 kw_Contract 搜索元素实例

左侧部分结构

左侧部分最多由三个部分构成:
存在条件
令牌模板
附加检查
  1. 存在条件(可选):查找具有指定属性的对象。建议在对象存在时为其命名,以便在同一规则中重复使用。该条件也可用于指定对象不存在的情况。

示例

如果只需查找一个 SellerName 搜索元素的实例,请在规则开头声明尚未找到任何实例:
~SellerName // 检查 SellerName 搜索元素是否尚未找到
请注意,使用否定条件时不能赋予变量名,因为否定条件表示不存在任何对象。 此条件用于检查名为 address 的命名实体是否存在:
a: NERAddress // 检查是否存在名为地址的命名实体,并将其赋值给新变量 a
有关此部分所用语法的详细信息,请参阅Existence condition
  1. 标记模板(必需):由一系列标记组成。标记指自然语言中的词或标点符号。标记通常不包含空格,少数情况下例外(例如将包含空格的词组视作一个词时):such asa lot

示例

例如,下面的令牌模板由以下部分组成:一个匹配“Grantor”关键字的令牌、一个冒号令牌,以及一个带有 Person 命名实体的可重复令牌(之所以设为可重复,是因为人名可能由多个词组成,每个词都是单独的令牌):
["Grantor"] [":"] [p: @NERPerson]+
该模板将匹配类似“Grantor: Anne Smith”的文本字符串,并将“Anne Smith”作为值赋给变量 p 有关本部分所用语法的详细信息,请参阅Token template
  1. 附加检查(可选):对规则中已提到的对象执行更多条件检查。

示例

例如,假设您正在查找合同双方,并已将字段分成两个独立的分组实例,每方一个。找到组织名称和地址后,您可以检查这些检索元素是否具有相同的父级。如果是,则表示该地址属于该组织。
n: Party.OrgName // 组织名称搜索元素已在之前找到
[ a: @Party.Address ] // 查找地址搜索元素所在的标记
// 检查组织名称和地址搜索元素
// 是否为同一个 Party 组元素实例的子元素
parent( n ) == parent( obj( a ) )
有关本部分所用语法的详细信息,请参见Additional check

右侧部分结构

右侧部分由一个或多个以逗号分隔的片段组成,这些片段会创建组和搜索元素的新实例,并为搜索元素赋值:
创建组_A,
创建元素_B_并赋值
通常,规则的左侧会匹配到一个标记、标记序列或对象,并将其赋给一个变量。随后,右侧可使用该变量,把其值写入某个搜索元素。例如,下面的代码将 t 的值写入 Element1 搜索元素:

示例

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
有关此部分所用语法的详细信息,请参阅右侧部分 **注意:**代码只能为 Extraction Rules 活动中已存在的搜索元素和组搜索元素创建实例,无法通过代码新建搜索元素。若要在结构中创建其他搜索元素,请在 Activity Editor 中使用 Search Elements 选项卡

引用搜索元素

要在代码中访问搜索元素,您需要使用能够唯一标识该元素的名称。若元素名称是唯一的,可直接按其名称引用;若存在多个同名元素,则需要指定足够具体的路径以唯一定位该元素。

示例

请考虑以下搜索元素的嵌套结构:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
要在代码中引用买方的姓名,您可以直接使用“FullName”,因为该名称的元素是唯一的。“Buyer.FullName”或“Root.Buyer.FullName”也同样可用。 要引用买方的地址,则至少需要添加父级组的名称,因为有两个名为“Address”的元素。在此应使用“Buyer.Address”或“Root.Buyer.Address”。

语言特定规则

您可以指定应执行该规则的文档语言,这样该规则将在其他语言下被跳过。请在规则前加上井号(#)和两字母语言代码(ISO 639-1 标准)。

支持语言的代码

语言代码
Englishen
Germande
Frenchfr
Spanishes
Italianit
Portuguese (Standard)pt
Japaneseja
Russianru
例如,如果你处理英文和西班牙文的 Document,你可能希望使用特定语言的关键词:

示例

#en
[ t: "Grantor" ] // 英文文档的关键词
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // 西班牙语文档的关键词
=>
kw_landlord( t );