首页 > 解决方案 > 如何使用 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)

我期望一个模式代码可以匹配那些模式字符串并将其删除。

标签: sql

解决方案


以下应该适用于 PostgreSql,我认为这是您通过 SPLIT_PART 和 REGEXP_REPLACE 判断所使用的

REGEXP_REPLACE(a.answer, '^\{"label": "(\\u0e[0-9a-z]{2})*([\w\s/]*)"\}', '\2')

我假设你有像 \u0e40 这样的代码代表 Unicode 字符


推荐阅读