热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用正则表达式去除字符串中单词间的空格

本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。

我正在使用Hive(基于Hadoop)编写类似于SQL的查询语句。遇到了一个具体的问题:需要从字段中删除空格。例如,邮政编码可能是XX00 0XX,我希望能删除中间的空格,使结果变为XX000XX。


目前,我尝试使用以下正则表达式:


REGEXP_REPLACE(postcode, '[[:space:]]*', '')

但这个方法似乎不起作用。有人能提供一些建议吗?


解决方案


#1 简单替换法


为什么不考虑使用简单的(非正则表达式的)替换函数呢?可以尝试以下代码:


REPLACE(postcode, ' ', '')

如果您的Hive版本不支持REPLACE()函数,那么可以改用:


REGEXP_REPLACE(postcode, '\s+', '')

#2 使用空白字符类


您是否尝试过使用'[[:blank:]]*'? 这个模式不仅会匹配空格,还会匹配制表符。请注意这一点,确保不会误删不必要的字符。


#3 使用多种方法


Hive提供了多种方法来处理字符串中的空格问题。以下是几种常用的方法:



  • Translate: SELECT translate('XX00 0XX', ' ', '')

  • regexp_replace:

    • SELECT regexp_replace('XX00 0XX', ' ', '')

    • SELECT regexp_replace('XX00 0XX', '\s', '')

    • SELECT regexp_replace('XX00 0XX', '\p{Blank}', '')

    • SELECT regexp_replace('XX00 0XX', '\p{Space}', '')

    • SELECT regexp_replace('XX00 0XX', '\p{javaWhitespace}', '')



  • replace: SELECT replace('XX00 0XX', ' ', '') (适用于Hive 1.3.0和2.1.0及以上版本)


更多关于Hive UDF函数的信息,请参考Hive官方文档


推荐阅读
author-avatar
ouyan1985_998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有