我正在处理其中具有数组索引的字符串路径,用[#]表示,其中#是索引。该索引可以是任何值。我想做的是在我的路径字符串中,删除所有出现的[#]。因此,括号和括号内的所有内容都将被删除。我看到了替换功能,但是我不确定如何在方括号之间使用任意的“中间”来替换。
我想从'['
移至']'
,并用''
代替。
外部路径:Number[2].padding[1]
减少为Number.padding
。
现在我有类似的东西:
replace(path, '[%]', '')
在我要使用%
作为通配符的地方,但是它不起作用。
答案 0 :(得分:1)
如果您使用的是MySQL 8.0,则可以使用REGEXP_REPLACE
来捕获诸如[#]
之类的字符串部分,如下所示
SELECT REGEXP_REPLACE(@txt, '\\[[^]]*\\]', '');
正则表达式细目:
\\[ # opening square bracket
[^]]* # 0 to N characters other than a closing square bracket
\\] # closing square bracket
带有测试数据的示例:
SET @txt = 'Number[2].padding[1] reduced to Number.padding';
SELECT @txt input, REGEXP_REPLACE(@txt, '\\[[^]]*\\]', '') output
| input | output |
| ---------------------------------------------- | ---------------------------------------- |
| Number[2].padding[1] reduced to Number.padding | Number.padding reduced to Number.padding |