问题描述
这是一个示例字符串: 年、季度、月、正文1、正文2、部门、BU、正文3、正文4、工作、年级、薪酬、地点、正文5、正文6、
- 随机文本总是成对出现,一个接一个。
- 两个文本中的第一个总是以“namesa”这个词开头,但是长度是不可预测的,但第二个文本没有这样的模式。例如,text1 可以是“namesa-他们的职责 505”,text3 可以是“namesa-silver Lane near me”,text5 可以是“namesa-regexp 101 challenge”。文本 2、文本 4、文本 6 完全不可预测。
- 这些文本都不包含逗号。它们只以逗号结尾。
- 整个模式重复的次数是不可预测的。
select ('Year,Quarter,Month,namesa-their duty 505,text2,Department,BU,namesa-silver Lane near me,text4,Job,Grade,Pay,Location,namesa-regexp 101 challenge,text6,' ) 来自双重;
对于上面的输入,我的输出应该是: 年、季度、月、部门、BU、工作、年级、薪酬、地点、
基本上,我们需要找到“namesa”这个词——从那里开始,经过两个逗号,从namesa到第二个逗号删除所有内容,然后对字符串的其余部分再次重复同样的事情。我不知道如何在正则表达式中做到这一点。
解决方法
所以您有一个以逗号分隔的标记字符串,并且您正在尝试替换以“namesa”开头的每个标记并删除它和以下标记?试试这个:
regexp_replace(col1,'namesa[^,]*,[^,','')
所以分解为:
- 字符串“namesa”
- 零个或多个不是逗号的字符
- 逗号(结束第一个标记)
- 零个或多个不是逗号的字符
- 逗号(结束第二个标记)