sql - 如何使用 Regexp_replace 删除模式字符串
问题描述
现在,我正在使用 Regexp_replace 函数将这些模式 \u0..... 从答案列中删除。请帮助创建一个模式来匹配这些字符串以将其删除。另外,这些是从 Type_form 中提取的,我不知道为什么它在我的答案栏中有这些模式,如果有人知道这种模式的含义,也请给我解释一下。
answer_trim
Checkout
Fitting Rooms
Products
Returns/Refund
Staff
Store Layout
\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e40\u0e07\u0e34\u0e19 Returns/Refund
\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e40\u0e07\u0e34\u0e19
\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e49\u0e32\u0e19 Store Layout
\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e49\u0e32\u0e19
\u0e08\u0e38\u0e14\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19 Checkout
\u0e08\u0e38\u0e14\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19
\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19 Staff
\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19
\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32 Products
这些是我一直试图将其删除以得到唯一答案的原始数据
回答
{"label": "Checkout"}
{"label": "Fitting Rooms"}
{"label": "Products"}
{"label": "Returns/Refund"}
{"label": "Staff"}
{"label": "Store Layout"}
{"label": "\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e40\u0e07\u0e34\u0e19 Returns/Refund"}
{"label": "\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e40\u0e07\u0e34\u0e19"}
{"label": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e49\u0e32\u0e19 Store Layout"}
{"label": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e49\u0e32\u0e19"}
{"label": "\u0e08\u0e38\u0e14\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19 Checkout"}
{"label": "\u0e08\u0e38\u0e14\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19"}
{"label": "\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19 Staff"}
{"label": "\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19"}
{"label": "\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32 Products"}
{"label": "\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32"}
(CASE WHEN a.type = 'multiple_choice'
THEN (
CASE WHEN SPLIT_PART(a.answer, ' ', 1) = '{"label":'
THEN REGEXP_REPLACE(TRIM('"' FROM LTRIM(RTRIM(LTRIM(a.answer,
'{"label":'), '}'), ' ')), '')
ELSE REGEXP_REPLACE(TRIM('"' FROM LTRIM(RTRIM(LTRIM(a.answer,
'{"other":'), '}'), ' ')), '') END
)
ELSE a.answer END)
我期望一个模式代码可以匹配那些模式字符串并将其删除。
解决方案
以下应该适用于 PostgreSql,我认为这是您通过 SPLIT_PART 和 REGEXP_REPLACE 判断所使用的
REGEXP_REPLACE(a.answer, '^\{"label": "(\\u0e[0-9a-z]{2})*([\w\s/]*)"\}', '\2')
我假设你有像 \u0e40 这样的代码代表 Unicode 字符
推荐阅读
- java - 在具有默认字符集 windows-1252 的 JVM 上显示 UTF-8 字符
- c++ - VS 代码错误“ISO C++ 禁止指针和整数之间的比较 [-fpermissive]”
- javascript - JqueryUI Sortable - 仅在子列表中移动项目的功能(第 3 个位置)
- python-3.x - 在模型渲染管理添加页面中工作的问题
- python - 我可以用几个不同的列复制一行吗?Python
- css - 更改超集中图表背景网格的颜色
- sql - 如何从表 mariadb 中选择 %
- c# - 如何将 NUnit 测试作为独立的可执行文件运行?
- php - Laravel 发送电子邮件:找不到类“Swift_Events_CommandEvent”
- sql - 将地址行填充到一组标准列中