正则在FME中的应用

原文发布时间:2017-04-24 15:29:08

作者:文刀木工  青

前言

不知不觉间,使用FME已有两年多的时间,在这期间,FME带给了我无数惊喜,最新版本的FME2017的界面也让人非常喜欢。

本文将结合几个常用的转换器,探讨一下在FME中使用正则表达式的方法。

Tester

在使用FME的这个转换器的时候,我喜欢使用tester中的正则表达式,并且貌似从2016开始Matches Regex变成了Contains Regex。这意味着,如果要筛选“我是FME中国技术交流群里的青,哈哈哈!”与“我是青,我在FME中国技术交流群,哦哦哦!”这样的两个字符串,并且我们将筛选规则确定为:字符串中同时含有FME和青这两个字符串,且FME在青之前;如果是之前的版本我们只能将表达式写成:.+FME.*青.+,来进行筛选;而现在可以直接这么写:FME.*青。经过这样的筛选将会直接pass掉不符合筛选条件的记录。设置及结果如下所示:

                       正则在FME中的应用 - FME - FME—专业化的空间数据服务实践者

                               正则在FME中的应用 - FME - FME—专业化的空间数据服务实践者

对比一下我们写的两个正则表达式:Matches Regex表示字符串必须与正则表达式完全匹配,而Contains Regex表示只要字符串中包含这种规律的字符串即可。在本例中,这种升级优势不太明显,但在一些需要复杂匹配的时候,这种升级就会让编写表达式变成一件比较简单的事情。

 

StringSearcher

使用StringSearcher从字符串中提取需要的信息大概是这个转换器最经典的用法,假如有这样两个个字符串:我最喜欢用的编程语言是'Python';我最喜欢的ETL工具是'FME'。并且我们将提取规则确定为:只提取出单引号之间的内容。要实现这样的功能只需要写这么一个表达式:(?<=').+(?=')。这个表达式的意思是:匹配引号中间的内容,但结果中并不会包含引号,这就是零宽断言的强大之处。设置及结果如下所示:

                        正则在FME中的应用 - FME - FME—专业化的空间数据服务实践者

 

StringReplacer

使用StringSearcher替换掉字符串中的内容,这个转换器用好了,效果是很神奇的,废话不多说,直接上实例吧(这个例子是帮助文档里的)。字符串:Bobby,表达式:(b*y),替换参数:--\1---\1,设置及结果如下所示:

                            正则在FME中的应用 - FME - FME—专业化的空间数据服务实践者

 

总结

在FME中合理的使用正则表达式,会简化我们的一些工作。不仅在FME中可以使用正则表达式,在PythonJava以及绝大多数计算机语言中都可以使用正则,并且在计算机语言中的正则是更加强大的。

由于水平有限,不足之处敬请斧正。另关于FME的学习,推荐加入FME中国技术交流群:438653305;关于技术的探讨欢迎发送邮件至:467477206@qq.com,或者添加本人QQ:467477206。

发布时间:2017-04-24 15:29:08

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值