gpt4 book ai didi

使用模式在雪花中替换 Regex_replace

转载 作者:行者123 更新时间:2023-12-05 09:29:31 34 4
gpt4 key购买 nike

我正在寻找一个正则表达式模式,它将删除冠词(a、an、the)、特殊字符(;、:、% 等)并扩展缩写(inc.-> 'incorporation', & -> 'and '等)在雪花中。我可以在雪花中做到这一点,但它并不完全正确。下面是我的代码。问题是我想给出模式(例如'一本好书'的输出应该是'好书'但是字符串'给一本书'应该保持为

'''
select REGEXP_REPLACE((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((


select REGEXP_REPLACE (


(select REGEXP_REPLACE(concat (' ', lower('a book of the great man'), ' '), '(^an )|(^the )|
(^a )'))
, '\\.|\\,|\\(|\\)|\\!|\\\\|/|£|\\$|%|\\^|\\*|-|\\+|=|_|{|}|\\[|\\]|#|~|;|:|''|`|@|<|>|\\?|
¬|\\|')

), ' & ', ' and ')
), ' ltd ', ' limited ')

), '', '')
'''

最佳答案

我建议您不要使用 REGEXP_REPLACE,而是编写一个 UDF(JavaScript 或 Java),并使用 JavaScript(或 java)的正则表达式。它将更加清洁和可维护。

https://docs.snowflake.com/en/sql-reference/user-defined-functions.html

这是一个示例函数:

CREATE OR REPLACE FUNCTION transform_text (STR VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS $$
var abbreviations = { "inc.": "incorporation", "&": "and" };

// remove articles from the beginning
var Result = STR.replace( /^(a|an|the) /i, "" );

// remove the special characters
Result = Result.replace( /(;|,|:|%)/g, "" );

// convert abbreviations
for (var abv in abbreviations) Result = Result.replace( abv, abbreviations[abv] );

return (Result);
$$
;

select transform_text( 'A good, a:; bo%ok & hoyd inc.' ) as Result;


+------------------------------------+
| RESULT |
+------------------------------------+
| good a book and hoyd incorporation |
+------------------------------------+

关于使用模式在雪花中替换 Regex_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70617384/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com