如何使用REGEXP_REPLACE从字符串中删除所有出现的、和I?尝试了以下方法,但不起作用
regexp_replace('123,|4abcd, aaa|,qqq|a', '|,', '', 'g')
抱歉,我是说|。
v64noz0r1#
|和*在字符类中失去了它们的特殊含义(方括号),这很方便:
|
*
mysql> select regexp_replace('123*,|4abcd, aaa|,qqq|a', '[|*,]', '') as s; +------------------+ | s | +------------------+ | 1234abcd aaaqqqa | +------------------+
注意正则表达式中方括号的使用,这意味着匹配括号中的任何一个字符。另外,您使用的最后一个参数'g'不受支持,也不是必需的。我猜想您认为这意味着要多次应用替换,就像在vim中执行s/regexp/string/g一样。但在MySQL和MariaDB中,REGEXP_REPLACE()默认对字符串中的所有匹配项应用替换。使用MariaDB 10.4进行演示:https://dbfiddle.uk/ZFNMTfJ6
'g'
s/regexp/string/g
REGEXP_REPLACE()
1条答案
按热度按时间v64noz0r1#
|
和*
在字符类中失去了它们的特殊含义(方括号),这很方便:注意正则表达式中方括号的使用,这意味着匹配括号中的任何一个字符。
另外,您使用的最后一个参数
'g'
不受支持,也不是必需的。我猜想您认为这意味着要多次应用替换,就像在vim中执行s/regexp/string/g
一样。但在MySQL和MariaDB中,REGEXP_REPLACE()
默认对字符串中的所有匹配项应用替换。使用MariaDB 10.4进行演示:https://dbfiddle.uk/ZFNMTfJ6