hive表列只接受键盘字符、数字,而忽略控件和ascii字符

avkwfej4  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(351)

配置单元表中是否有任何regex或translate或任何其他表达式只考虑键盘字符而忽略控制字符和ascii字符?
示例:regexp \u replace(选项类型,“[^a-za-z0-9]+”,“”)
在上述表达式中,只考虑字符和数字,而不考虑任何键盘特殊字符数据,如%、&、*、?、,。,?,。。可用的话,我得到的输出为空白。
上校:布维?你在哪里?
结果:布维你在哪
但我要输出为布维?你在哪里?
像这样,如果任何特殊的键盘字符出现,那么它将显示为是,任何控制或ascii字符来,它将忽略。

btxsgosb

btxsgosb1#

你应该考虑到不同的键盘布局(语言)有不同的“特殊”字符,比如德语ö ä ü 或者西班牙语ñ (仅举几个例子——不谈亚洲、希伯来语或阿拉伯语键盘)。
我看到了两种解决方案:1)也许您应该定义一个允许的字符列表并将它们放入字符类中,这样您就可以严格控制允许的字符,但您可能会排除大多数语言
2.)您可以查看正则表达式unicode类,您可以允许任何“字母” \p{L} 或“数字” \p{N} 甚至标点符号 \p{P} 并且只允许那些你知道会引起问题的字符,比如控制字符 \p{C} 有关unicode正则表达式的详细信息,请参阅regular-expression.info
编辑:
如果您只想使用英语,并且可以假设您只允许使用ascii,那么您可以在字符类中键入键盘上找到的每个键,作为一个不完整的示例: /^[-a-zA-Z0-9,.-;:_!"§$%&]+$/
您可以使用ascii表来确定允许字符的范围,在您的例子中是从“space”开始的

到“花括号” } 并欺骗角色类允许所有这些: /^[ -}]+$/

b4lqfgs4

b4lqfgs42#

我得到了解决方案regexp\u replace(选项类型,“[^a-za-z0-9*!@+-/#$%()\u=/<>?\ |&]+”,“”)作品

相关问题