替换字母之间的点 [ORACLE]
Replacing dots between letters [ORACLE]
我有一个包含点的字符串。
select 'String.Cont.ains 123.FD DF.123 11.11' str from dual
我需要用 space 将点替换为点,但前提是点前有字母,点后有字母。在所有其他情况下,不得替换点。
我可以用 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
您可以使用这个正则表达式:
([a-z])(\.+)([a-z])
寻找一个字符,一个或多个点,然后是另一个字符,并将其替换为
即第一个字符、点、space 和第二个字符。在 Oracle 中(注意 i
标志的使用,因此我们不必指定 [A-Za-z]
而只是 [a-z]
):
SELECT
REGEXP_REPLACE('String.Cont.ains 123.FD DF.123 11.11', '([a-z])(\.+)([a-z])', ' ', 1, 0, 'i') AS new
FROM dual
输出:
NEW
String. Cont. ains 123.FD DF.123 11.11
我有一个包含点的字符串。
select 'String.Cont.ains 123.FD DF.123 11.11' str from dual
我需要用 space 将点替换为点,但前提是点前有字母,点后有字母。在所有其他情况下,不得替换点。
我可以用 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
您可以使用这个正则表达式:
([a-z])(\.+)([a-z])
寻找一个字符,一个或多个点,然后是另一个字符,并将其替换为
即第一个字符、点、space 和第二个字符。在 Oracle 中(注意 i
标志的使用,因此我们不必指定 [A-Za-z]
而只是 [a-z]
):
SELECT
REGEXP_REPLACE('String.Cont.ains 123.FD DF.123 11.11', '([a-z])(\.+)([a-z])', ' ', 1, 0, 'i') AS new
FROM dual
输出:
NEW
String. Cont. ains 123.FD DF.123 11.11