PLSQL正则表达式:按出现顺序获取字符串中的不同字母[关闭]

问题描述 投票:0回答:1

我正在使用 PL/SQL,我需要获取按首次找到的顺序返回的字符串中的不同字母。我可以通过多次迭代字符串来完成此操作,但我可以在一个正则表达式中完成此操作吗?

以下是一些示例: “aa”应该返回“a”。 “ab”应该返回“ab”。 “aabbcc”应该返回“abc”。 “abccba”应该返回“abc”。

regex plsql
1个回答
1
投票
select regexp_replace('aabbxcc','(.)\1+','\1') from dual
  • .
    指任何字符
  • ()
    将该角色放入一个组中。
  • \1
    指的是上一场比赛
  • +
    表示上一场比赛出现一次或多次

换句话说,正则表达式查找重复的字符,其中重复意味着同一字符连续出现两次或三次或更多次,例如

aa
aaa
aaaa

替换字符串是指该组匹配的字符为单个字符。因此,REGEXP_REPLACE函数将用仅出现一次的重复字符替换该字符,而不重复的字符将保持原样。

参考这个db<>fiddle

当然,上面的内容不适用于您想要获得

abccba
的最后一个
abc
示例。我认为用正则表达式根本无法实现这一点。既然您说您正在使用 PL/SQL,那么也许可以在
while
循环中重复上述操作,直到 REGEXP_REPLACE 根本不更改源。

© www.soinside.com 2019 - 2024. All rights reserved.