红移中的正则表达式
Posted
技术标签:
【中文标题】红移中的正则表达式【英文标题】:Regex in redshift 【发布时间】:2018-09-10 16:45:30 【问题描述】:我有问题..我需要从这个字段中提取:
exchange<=><br>type<=>full<br>cont<=>part<br>req<=>no<br>money<=>money<br>money<=>3100,4000,0,month<br>boss<=>0
五个信息:
full
part
3100
4.4000
5.month
我曾尝试使用 regexp_substr():
regexp_substr(column,'type<=>[^<br>]*')
但我对正则表达式一无所知,我无法以正确的方式做到这一点.. 你能帮我吗?
【问题讨论】:
尝试regexp_substr(column,'type<=>([a-zA-Z0-9]+)')
或尝试[^<]+
而不是[a-zA-Z0-9]+
。
是的,它适用于 type 和 cont :) 我的结果(typefull)和(contpart),但它不适用于 3100、4000 和月份..
啊哈,所以你想要单独的正则表达式,对吧? regexp_substr(column,'type<=>([^<]+)')
、regexp_substr(column,'cont<=>([^<]+)')
,然后是 money<=>([0-9]+)
、money<=>[0-9]+,([0-9]+)
和 money<=>[0-9]+,[0-9]+,[0-9]+,([^<]+)
当涉及到:money<=>([0-9]+)
4000 我的输入:money<=>3500,4000
和当涉及到month
我的输入: money<=>3100,4000,0,month
您确定将捕获括号放在我放置的位置吗?
【参考方案1】:
我从未使用过 redshift,但使用 regex 我可以帮助您:
"(type|cont|money)<=>([^<,]+)(,([^<,]+),[^<,]+,([^<,]+))?"
您作为示例输入的字符串中的捕获编号 4 它将捕获您需要的所有内容,甚至排除 0 :
第 1 组:金钱 第 2 组:3100 第 3 组:,4000,0,月 第 4 组:4000 第五组:月
如果您有问题,请告诉我。 如果你想掌握我可以教你的正则表达式技能,它会很有用。
【讨论】:
等一下,我会解决的 看这个链接,***.com/questions/7758859/…你必须指定你想要的捕获组,在那种情况下是第二个,我猜,因为我不能在redshift中尝试这个正则表达式 在最后一种情况下,您需要指定您想要组 2 、 4 和 5 这里解释得更好:w3resource.com/oracle/character-functions/…以上是关于红移中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章