使用正则表达式对数据元素进行解析

如果您的输入消息可包含可选子字段,而它的存在与否仅可通过检查数据的实际值确定(例如,后跟一个或多个字母字符的数值数字的可选字段),则需要使用数据元素分隔方法使用数字模型。这特别与符合 SWIFT 工业标准的消息相关。要使用此方法,必须提供正则表达式以标识与子字段关联的那部分输入消息。需要为复杂类型的每个子代的数据模式属性提供正则表达式值。

在进行解析时,数据依次与复杂类型的每个子代匹配。解析器通过使用子代的正则表达式确定来自应用于此子代的消息的字符数来这样做。从消息中的当前位置开始,此字符数是与正则表达式匹配的最长字符串的长度。如果与正则表达式匹配的最长字符串长度为零,则元素存在于消息中,并且值中使用空的字符串。 如果字符串与正则表达式不匹配,则元素不存在。如果元素是必需的,则这可能导致以后的验证错误。

确定来自输入消息字符数之后,正常的数据转换或复杂元素情况下进一步的解析,会在指派值给元素的输入消息的文本上执行。 如果由模型标识的长度不符合子代的定义,这可能导致数据溢出或欠载错误。

正则表达式语法 说明了全部的语法规则以及如何应用它们,但是下表给出了使用数据模式进行解析的几个简单示例。此表后有一个更复杂的示例。

输入消息 数据模式 匹配的值
"123456ABC" [0-9]* "123456"
"123" [A-Z]* ""
"123" [A-Z]+ 不存在
"ABCD123"

[A-Z]{1,3} 第一个字段

[A-Z]{2,4} 第二个字段

“ABC” - 第一个字段(与模型匹配的最长字符串)

不存在 - 第二个字段(两个字母字符的最小长度不存在)

"ABCDEFGHIJ1234"

[A-Z]{1,3} 第一个字段,重复

[0-9]+ 第二个字段

“ABC” - 第一个字段 [1]

“DEF” - 第一个字段 [2]

“GHI” - 第一个字段 [3]

“J” - 第一个字段 [4]

“1234” - 第二个字段(当数据“1234”与为第一个字段指定的数据模式不再匹配时,重复字段会终止。)

下面的示例显示了三字段模型匹配。

消息定义:
复杂类型:Data Element Separation=Use Data Pattern
字段 1:xsd:string minOccurs=1, maxOccurs=1, Length=5, Pad=SPACE,
				Data Pattern=".{5}"
字段 2:xsd:int minOccurs=0, maxOccurs=1,
				Data Pattern="[0-9]{0,6}"
字段 3:xsd:string minOccurs=1, maxOccurs=1, minLength=3, maxLength=4,
				Data Pattern="[A-Z][A-Za-z0-9]{2,3}"

输入 1:"ABCDE123F12"
结果 1:字段 1="ABCDE",字段 2="123",字段 3="F12"

输入 2:"ABCDEF12"
结果 2:字段 1="ABCDE",字段 2= 不存在,字段 3="F12"

输入 3:"ABCDE123456XXXX"
结果 3:字段 1="ABCDE",字段 2="123456",字段 3="XXXX"

输入 4:"ABCDE1234567"
结果 4:字段 1="ABCDE",字段 2="123456",字段 3=不存在,
				如果启用验证这会导致异常。一个
				字符(“7”)保持未指派给任何元素,
				也会导致异常。

在重复子代的情况下,当模型匹配多少次就对子代实例进行多少次解析。即使为重复元素指定最大出现次数并且出现次数超过了上界也会应用。因此,一些终止条件必须可从元素的正则表达式模型确定。上表包含重复元素的示例。

当进行解析时,对于来自输入消息与数据模式匹配并指派给元素的数据,会对它作进一步扫描来查找较高级别复杂类型的定界符。此行为类似于数据元素分隔方法固定长度的行为。但是,可以对将数据与很多可能的定界符之一匹配的正则表达式进行编码。

当写时,如果为子代指固定长度度,则根据长度来填充值。此行为类似于数据元素分隔方法定界变长元素的行为,但没有定界符。

如果消息包括将类型组合设置为选项的复杂类型,则可将数据元素分隔方法设置为使用数据模式。在这种情况下,子代的数据模式值用于解析选项。从第一个子代开始,提供匹配第一个模型确定存在哪个子代。因此,选项中子代的顺序可能是重要的。

复杂类型可包含未限制最大出现次数的重复子代。可以可选地为子代指固定长度度和其他关联属性(如,对齐和填充)。

请参阅 TDS 消息模型完整性 以获取使用数据元素分隔方法使用数据模式时必须遵循的规则,并参阅 组合和内容验证的组合 以获取组合内容验证的有效设置的详细信息。

相关概念
消息建模
消息模型
TDS 格式:与逻辑模型的关系
相关任务
开发消息模型
使用消息定义文件
使用消息模型对象
相关参考
消息模型引用信息
消息模型对象属性
附加的 MRM 域信息
附加的 TDS 信息
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ad09870_