前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货分享】正则在FME中的应用

【干货分享】正则在FME中的应用

作者头像
数据处理与分析
发布2022-03-09 10:53:55
6560
发布2022-03-09 10:53:55
举报

前言

这篇文章,是本号开篇第一作。在第一次推文就选了正则,足以说明正则的重要性(个人感觉)。虽文章已有三年之久,但内容从今天来看,仍不过时,故重发一次,希望能对各位看官有些启发!

以下为正文部分

能看到此文,我就粗暴的认为你已经对FME有了一定的了解。不了解的话,可以多看看我的推送!

。下面我将结合FME中的几个转换器进行一些简单的展示。

Tester

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

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

StringSearcher

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

StringReplacer

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

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Tester
  • StringSearcher
  • StringReplacer
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档