Insert space in between string Regex Oracle

Insert space in between string Regecp Oracle

我有一些地址格式不正确。有none我想加一个space。示例如下

Input          Expected output
-----          ----------------
AVEX           AVE X or AVENUE X
AVE  X         AVE X or AVENUE X
AVENUEX        AVENUE X or AVE X
AVENUE   X     AVENUE X or AVE X
AVEOFCITY      AVE OF CITY  or AVENUE OF CITY

我创建了一个下面的表达式,但它并没有在所有情况下给出正确的结果,尤其是 AVENUE 闯入 AVE NUE

SELECT REGEXP_REPLACE('AVENUEN','^(AVE(NUE)*?)(\w)',' ') rep FROM dual;

这会让你们离得更近一些。只是稍微调整了你的正则表达式以允许可选的 'NUE' 并在之后处理 0 个或更多空格。

with tbl(id, str) as (
  select 1, 'AVEX'       from dual union all
  select 2, 'AVE  X'     from dual union all
  select 3, 'AVENUEX'    from dual union all
  select 4, 'AVENUE   X' from dual union all
  select 5, 'AVEOFCITY'  from dual
)
SELECT
  id,
  REGEXP_REPLACE(str,'^(AVE(NUE)?) *?(\w)',' ') rep 
FROM tbl;

您可能需要另一个通行证来处理 'OFCITY' 因为谁知道在您必须允许的 AVENUE 之后会发生什么。