我有一个逗号分隔值的字符串,为了显示的目的,我想把它修剪一下。
该字符串是一个逗号分隔的值列表,这些值的长度和列表条目的数量各不相同。
列表中的每个条目都被格式化为“##-NX”格式的五字符模式,后跟一些文本。
例如,“01-NX部分文本、02-NX更多文本、09-NX其他文本、12-NX等......”
是否有正则表达式函数可以用来删除列表中每个条目的5个字符前缀部分之后的文本,返回“01-NX,02-NX,09-NX,12-NX,..."?
我是一个正则表达式的新手,我还没有弄清楚如何编码的模式。
2条答案
按热度按时间ohfgkhjo1#
我觉得你需要的是
内部的
REGEXP_REPLACE
查找类似nn-NX(两个数字字符后跟“-NX”)的模式以及下一个逗号之前的任意数量的字符,然后用第一个和第三个术语替换它,去掉“任意数量的字符”部分。外部的
REGEXP_REPLACE
查找一种模式,如两个数字字符后跟任意数量的字符,直到最后一个NX,并保留字符串的这一部分。下面是我用于测试的Oracle代码:
qnakjoqk2#
此替代方法调用REGEXP_REPLACE()一次。
匹配2个数字、一个短划线和“NX”,后跟任意数量的零个或多个字符(非贪婪),其中后跟逗号或字符串结尾。替换为第一组和第三组,这两组将是逗号或字符串结尾。
编辑:采纳了dougp的建议,通过添加第三个捕获组来消除RTRIM。谢谢!