我需要一个正则表达式来将字符串中的 0 替换为 O,只有当它链接到一个单词时才为 0。 例如:
R0OSEVELT => ROOSEVELT
100 RO00SEVELT => 100 ROOOSEVELT
0RANGE10 => ORANGE10
PALT00OO = PLATOOOO
最佳答案
因为你已经用 sql 标记了问题,下面是我可以想出的代码。
REPLACE
(search_string,
REGEXP_SUBSTR
(search_string,
'([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])'
),
TRANSLATE
(REGEXP_SUBSTR
(search_string,
'([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])'
),
'0',
'O'
)
)
这是输出。它适用于您的输入案例。也许我错过了其他一些可能性。
R0OSEVELT --> ROOSEVELT
100 RO00SEVELT --> 100 ROOOSEVELT
0RANGE10 --> ORANGE10
PALT00OO --> PALTOOOO
RO00SEVELT 100 --> ROOOSEVELT 100
RANGE10 --> RANGE10
RANGE0 --> RANGEO
关于sql - Regexp_Replace Oracle 中具有相同替换次数的字符的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179612/