regex - 在 Hive 中用空替换单引号(')
问题描述
我有一个功能来替换不同类型的字符,如下所示。
CAST(TRANSLATE(REGEXP_REPLACE(UPPER(number),' |,|-|/|&|_|''''',''),'.|(|)','') as string) as number
一切工作正常,除了 ''''' 部分,我想用任何内容替换单引号/撇号。
例子:
TYLER'SCOFFEE should come out as TYLERSCOFFEE
我检查了这个论坛的示例,似乎我们可以使用反斜杠来实现上述目标,但是当我使用下面这样的反斜杠时,它会引发错误。
select CAST(TRANSLATE(REGEXP_REPLACE('TYLER\'SCOFFEE',' |,|-|/|&|_|'\'',''),'.|(|)','') as string) as number;
Error: Error while compiling statement: FAILED: ParseException line 1:68 character '\' not supported here (state=42000,code=40000)
有人可以帮我解决我的问题吗?谢谢。
解决方案
使用双引号正则表达式。在双引号内,单引号被屏蔽:
select 'TYLER\'SCOFFEE' as original_str, regexp_replace('TYLER\'SCOFFEE',"'",'') result;
结果:
original_str result
TYLER'SCOFFEE TYLERSCOFFEE
此外,如果您需要用相同的替换替换许多不同的字符,请将它们全部放入[]
,无需使用 pipe |
:
select regexp_replace('TYLER\'SCOFFEE ,-/&_',
"[ ,-/&_']",
'')
结果:
TYLERSCOFFEE
推荐阅读
- ios - 如何让我的按钮在被选中时稍微变暗,比如故事板按钮?
- javascript - 如何将 Promise 的结果从节点传递到 HTML 模板?
- java - Java二叉搜索树:min和max之间所有节点键的总和
- c# - 我们如何将材料添加到 Google Classroom API Coursework 对象?
- python - Python smtplib 接受日历事件
- c++ - 当仅在一行上提示输入一次时,如何确保用户输入名字和姓氏?
- html - 可以使用 style="float: right;" 的元素吗 与一系列“float:left;”中的第一个对齐 元素?
- javascript - setInterval(function(), 5) 不适用于 iOS 或任何移动设备
- javascript - 使用 React Hooks 的倒数计时器
- javascript - Discord.js 使用 404 获取 5 条特定消息完全失败