【问题标题】:Replacing dots between letters [ORACLE]替换字母之间的点 [ORACLE]
【发布时间】:2020-03-06 22:00:51
【问题描述】:

我有一个包含点的字符串。

select 'String.Cont.ains 123.FD DF.123 11.11' str from dual

我需要将点替换为带空格的点,但前提是字母在点之前且字母在点之后。在所有其他情况下,不得替换点。

我可以用regexp_replace 做到这一点吗?

结果一定是这样的:

String. Cont. ains 123.FD DF.123 11.11

我正在尝试使用这个:

select regexp_replace('String.Cont.ains 123.FD DF.123 11.11','(\.){1,}','. ')from dual

【问题讨论】:

    标签: sql regex oracle regexp-replace


    【解决方案1】:

    你可以使用这个正则表达式:

    ([a-z])(\.+)([a-z])
    

    查找一个字符,一个或多个点,然后是另一个字符,并将其替换为

    \1\2 \3
    

    即第一个字符、点、空格和第二个字符。在 Oracle 中(注意使用 i 标志,因此我们不必指定 [A-Za-z] 而不仅仅是 [a-z]):

    SELECT 
    REGEXP_REPLACE('String.Cont.ains 123.FD DF.123 11.11', '([a-z])(\.+)([a-z])', '\1\2 \3', 1, 0, 'i') AS new
    FROM dual
    

    输出:

    NEW
    String. Cont. ains 123.FD DF.123 11.11
    

    Demo on dbfiddle

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2018-05-06
      • 1970-01-01
      • 2019-04-17
      相关资源
      最近更新 更多