我需要一個正則表達式來將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