跳转到主要内容
当你在 Properties 窗格中创建元素并设置其属性时,程序会自动为这些属性生成代码。本节将帮助你理解这些自动生成的代码,以便在需要时进行修改。

搜索元素结构

搜索元素结构示例 Parties.Address 搜索元素的自动生成代码如下:

自动生成规则

~Root.Parties.Address,
t1 : Root.Parties.Organization,
t2 : Root.kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+
=>
Root.Parties.Address( t );
如您所见,自动生成的代码始终使用完整路径来引用每个搜索元素,以避免名称冲突。在这种情况下,我们可以精简元素名称,从每个名称中去掉 Root。

使用更短元素名的规则

~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
现在我们可以逐条拆解每条语句的含义:

规则详解

// 检查是否尚未找到 Address 搜索元素,因为我们只需要第一个实例
~Parties.Address,
// 获取 Organization 搜索元素和下一个参与方关键字搜索元素。它们在 Address 之前已被找到
t1 : Parties.Organization,
t2 : kw_PreNextParty
// 查找包含一个 NERAddress 命名实体的标记序列
// ("same" 关键字指定当存在多个 NERAddress 时只匹配一个)
// 地址应位于组织名称之后、下一个参与方关键字之前
// + 号表示标记序列可由多个单词组成
// 末尾的 ~@Parties.Address 条件确保
// 地址不会在相同的标记上再次匹配
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );