如何用Hive regexp_replace替换特殊字符为连字符并转小写
Hive实现字符串清洗的方案
你可以直接用如下SQL语句完成需求:
SELECT regexp_replace( lower('Strong-Memorial/123, Hospital | URMC'), '[^a-z0-9]+', '-' ) AS cleaned_str
运行后返回的结果就是目标值strong-memorial-123-hospital-urmc。
逻辑说明
- 先调用
lower()函数把输入字符串的所有字母转为全小写,避免正则匹配漏判大小写 regexp_replace的正则规则[^a-z0-9]+表示匹配所有连续的、不属于小写英文字母和数字的字符,包括空格、斜杠、逗号、竖线、原有的连字符等所有特殊字符,统一替换为单个连字符-
边界场景补充
如果你的输入字符串存在开头/结尾就是特殊字符的情况,处理后会在首尾多出多余的连字符,可以再加一层正则处理掉首尾的连字符:
SELECT regexp_replace( regexp_replace( lower(你的字符串字段), '[^a-z0-9]+', '-' ), '^-|-$', '' ) AS cleaned_str FROM 你的表名;
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

