在FME中的使用正则表达式之向前看向后看(前瞻后顾)

一、任务

正则表达式在各种语言中都在使用,在FME中,其实后台就是Python,所以在FME使用正则表达式遵循Python语言的约定。

二、向前看向后看(前瞻后顾)的用法示例

语法效果示例
str1(?=str2)查找str2前面的str1白(?=萝卜) :提取“白萝卜”的“白”
(?<=str2)str1查找str2后面的str1(?<=白)萝卜 :提取“白萝卜”的“萝卜”
str1(?!str2)查找后面不是str2的str1黑(?!萝卜) :提取非“黑萝卜”的“黑”
(?<!str2)str1查找前面不是str2的str1(?<!黑)萝卜 :提取非“黑萝卜”的“萝卜”

三、实际使用场景

3.1 提取经度的度,用到向前看(前瞻)直接指定获取°之前的数字即可,经度的度都是整数,此处用\d+即可。
在这里插入图片描述

3.2 提取经度的分,用到向前看+向后看(前瞻后顾),经度的分都是整数,此处用\d+即可。
图3.2
3.3 提取经度的秒,同样也用到向前看+向后看(前瞻后顾),因为秒会有小数点,此时不再能用\d+,而是用.*代表任意个数的任意字符(见上图),但是可能会有非法字符在里面,例如空格。严肃的写法建议是[\d.]{1,} 代表数字或点出现1到无限次,就不会匹配到空格等非法字符(见下图)
图1图2

四、小结

正则表达式对于匹配同样的字符可能有很多种方法,选择一种自己喜欢、可读性强,方便将来维护。正则表达式非常强大,语法却不是那么复杂,值得投入时间和精力学习一下。另外FME的正则表达式编辑验证器可能会匹配不到结果,但是实际是匹配上的,以运行结果为准,不要太过于相信自带的正则表达式编辑验证器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值