我需要一个正则表达式来将0替换为字符串中的O,如果它与某个单词相链接,则只需要0。 如:Regexp_Replace在Oracle中替换次数相同的字符的多次发生
R0OSEVELT => ROOSEVELT
100 RO00SEVELT => 100 ROOOSEVELT
0RANGE10 => ORANGE10
PALT00OO = PLATOOOO
我需要一个正则表达式来将0替换为字符串中的O,如果它与某个单词相链接,则只需要0。 如:Regexp_Replace在Oracle中替换次数相同的字符的多次发生
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
不指定会发生什么一个零站在自己的,但是:
sed -E 's/([[:alpha:]])?0([[:alpha:]])/\1O\2/g; s/([[:alpha:]])0([[:alpha:]])?/\10\2/g'
会做你没有指定作业的一部分。 如果第一个替换命令位于两个字母字符之间,或者至少后面跟着字母字符(即字开头),则用字母'O'替换零。第二个与词尾相同。
如何在SQL语句中实现?我没有得到它 – 2013-04-24 14:37:17
真棒诺埃尔..谢谢很多..似乎解决所有的选择..伟大的工作!再次感谢您的时间和帮助。 – 2013-04-24 14:31:39
嗨诺埃尔其实这个10 0K00LS00O不工作? – 2013-04-24 15:06:05
它看起来只有第一次出现的0被替换。 – Noel 2013-04-25 03:10:15