如何在PostgreSQL中使用正则表达式去除方括号
解决正则提取纯数值的方案
直接调整正则表达式,把方括号内的数值单独作为捕获组即可,修改后的SQL语句如下:
SELECT (regexp_matches('datavalue=Document{{value=[5]}}', 'datavalue=Document{{value=\[([0-9]+)\]'))[1] response;
说明:
- 原正则的捕获组
([^d}},'']+)会把方括号[和]也包含进去,所以返回[5]。 - 修改后的正则
datavalue=Document{{value=\[([0-9]+)\],明确匹配[之后的数字序列([0-9]+),再匹配],并把数字部分单独放到捕获组里,这样提取的结果就是纯数值5。
扩展场景(支持正负、小数)
如果数值可能包含正负号或小数(比如[-123.45]),可以用更通用的正则:
SELECT (regexp_matches('datavalue=Document{{value=[-123.45]}}', 'datavalue=Document{{value=\[([-+]?[0-9]+(\.[0-9]+)?)\]'))[1] response;
内容的提问来源于stack exchange,提问作者sahil
相关产品推荐
相关产品推荐

