我想用REGEXP_REPLACE函數替換字符串中的方括號。即使我逃避這些chracters它不會取代用oracle替換字符串的方括號REGEXP_REPLACE函數
select regexp_replace('VMI[[DATA]]INFO', '[\[\]]', '_') from dual;
結果
VMI[[DATA]]INFO
我們怎樣才能做到這一點?我錯過了什麼嗎?
我想用REGEXP_REPLACE函數替換字符串中的方括號。即使我逃避這些chracters它不會取代用oracle替換字符串的方括號REGEXP_REPLACE函數
select regexp_replace('VMI[[DATA]]INFO', '[\[\]]', '_') from dual;
結果
VMI[[DATA]]INFO
我們怎樣才能做到這一點?我錯過了什麼嗎?
你可以這樣說:
select regexp_replace('VMI[[DATA]]INFO', '\[|\]', '_') from dual;
但我不認爲這都是必須的正則表達式,你也可以使用翻譯
select translate('VMI[[DATA]]INFO', '[]', '__') from dual;
內傾性格類,你不需要逃脫。特殊規則適用於 - ]及^,原因很明顯(見例如List of metacharacters for MySQL square brackets)
所以你的情況,你可以使用
select regexp_replace('VMI[[DATA]]INFO', '[][]', '_') from dual;
,但我同意@ABCade - 定期expresssions是矯枉過正這個。
作爲開發人員有普遍傾向於使用正則表達式進行替換,並不知道oracle的translate()函數。現在我按照您的建議使用translate()。謝謝 – Pokuri