FME里的查询替换转换器(二)

原文发布时间:2011-01-06

作者:糖糖

FME里的查询替换转换器(一)里介绍了两种查询替换转换器StringPairReplacer和StringReplacer的用法,本文继续介绍第三个查询转换器StringSearcher的用法

该转换器曾用名为Grepper,为了更准确表达其功能重命名为StringSearcher。在转换器中设置正则表达式,对指定的属性与之执行匹配,匹配成功的记录从MATCHED端输出,否则从FAILED端输出。

参数设置:


连接转换器后,在Attribute下拉菜单中选择属性,指定源要素属性中要查找的列
Regular Expression中输入正则表达式,然后选择Case Sensitive确定是否区分大小写,默认下为'NO',表示不区分大小写
属性说明:
转换器设置好后,可以看到MATCHED端下拉列表中除了保留要素原来的属性外,还多了两列储存匹配的属性值部分,如下:

 _matched_characters列储存与正则表达式匹配的字符
_matched_parts{}储存与正则表达式匹配的属性值的各部分内容,右键点击可扩展该属性

        

在弹出的框中键入扩展部分的个数
 
 关于正则表达式的应用:
FME里的查询替换转换器(一)里已介绍过正则表达式里各种符号的含义,本文再次举例帮助大家理解:
正则表达式(AREs)是一个或多个被‘|’分隔的分支,与任意能与之匹配的相匹配,以下为表达式中各符号的含义:         
           |  分隔符

   *  0个或多个其之前的匹配的顺序

   +  一个或多个其之前的匹配的顺序

   ?  0个或一个其之前的匹配

   .  匹配任何单个字符

   ^  匹配开头的值

   $  匹配结尾的值

   [ ] 包含某个字符选择的设置

   ( )包含某个子表达式——无论匹配的是_{}列表属性里的哪个子表达式

   a  能够列入可匹配的任意字符

举例:

^A   表示与任意A开头的值匹配

^[0-9]   表示与任意数字开头的值匹配

^[0-9]+$   表示与任意数字组合的数值匹配

^(beef|chicken)$   表示与包含“beef” 或 “chicken”的值匹配

^([0-9]*) ([0-9]*)$ 表示与两个被空格分隔的整数匹配,然后将第一个数字输入到_matched_parts{0},第二个数字输入到_matched_parts{1}

^N([0-9][0-9])[.]([0-9][0-9])[.]([0-9][0-9]) 表示与N23.45.11匹配,然后将23输入到_matched_parts{0},将45输入到_matched_parts{1},将11输入到_matched_parts{2}

有关正则表达式的详细内容,可在FME功能函数和管道工厂手册里参考Syntax of Tcl Regular Expressions。 



猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80963851