regexp\u replace替换特定的重复字符

v440hwme  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(543)

我正在努力使用regexp\u replace。目前,我正在尝试处理一个类似于以下字符串的字符串:

ABC|||CDE|||||DEF||||||556|||.|.|

我想要达到的是每个小组只有一个管道。因此,目标字符串是:

ABC|CDE|DEF|556|.|.|

可以使用regexp\u replace或类似的函数来完成吗?怎样?请注意,我无法控制字符串中字符的位置,也不会有模式(例如,“每隔五个字符就有管道”)。我只需要删除即时管道重复。

uidvcgyl

uidvcgyl1#

使用 REGEXP_REPLACE(value,'(\|)+','|') . 例如

SELECT REGEXP_REPLACE('ABC|||CDE|||||DEF|||||||556||||.|.|','(\|)+','|') newval
FROM dual
ttygqcqt

ttygqcqt2#

当然,正则表达式更漂亮,但是-为了好玩,为了表示好的,古老的 REPLACE 做这个工作。

SQL> select
  2    replace(
  3      replace(
  4        replace('ABC|||CDE|||||DEF|||||||556||||.|.|',      --> input string
  5                '|',
  6                '|' || chr(9)
  7               ),
  8              chr(9) || '|'
  9             ),
 10             chr(9), '') result
 11  from dual;

RESULT
--------------------
ABC|CDE|DEF|556|.|.|

SQL>

相关问题