您可以使用 regexp_replace 从一个字符串中替换多个模式匹配吗?

问题描述

这是一个示例字符串: 年、季度、月、正文1、正文2、部门、BU、正文3、正文4、工作、年级、薪酬、地点、正文5、正文6、

我需要删除所有出现的随机文本。规则是:

  1. 随机文本总是成对出现,一个一个
  2. 两个文本中的第一个总是以“namesa”这个词开头,但是长度是不可预测的,但第二个文本没有这样的模式。例如,text1 可以是“namesa-他们的职责 505”,text3 可以是“namesa-silver Lane near me”,text5 可以是“namesa-regexp 101 challenge”。文本 2、文本 4、文本 6 完全不可预测。
  3. 这些文本都不包含逗号。它们只以逗号结尾。
  4. 整个模式重复的次数是不可预测的。

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[^,]*,[^,','')

所以分解为:

  1. 字符串“namesa”
  2. 零个或多个不是逗号的字符
  3. 逗号(结束第一个标记)
  4. 零个或多个不是逗号的字符
  5. 逗号(结束第二个标记)

SQLFiddle

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...