我正在尝试删除主要的特殊字符(可能是 - “$& ^ @ _)
来自col1 col2
1 0
2 0.02
3 0
4 0
5 0.12
6 0
7 0
8 0
9 0.91
10 0
11 0
12 0
13 1.13
使用Hive。
"Persi és Levon Cnatówóeez
但这会删除所有特殊字符。
我期待类似于
的输出 select REGEXP_REPLACE('“Persi és Levon Cnatówóeez', '[^a-zA-Z0-9]+', '')
答案 0 :(得分:2)
试试这个:
select REGEXP_REPLACE('"Persi és Levon Cnatówóeez', '[^a-zA-Z0-9\u00E0-\u00FC ]+', '');
我在Hive上尝试了它,它取代了任何不是字母(a-zA-Z)的字符(0-9)或重音字符(\ u00E0- \ u00FC)。
0: jdbc:hive2://localhost:10000> select REGEXP_REPLACE('"Persi és Levon Cnatówóeez', '[^a-zA-Z0-9\u00E0-\u00FC ]+', '');
+----------------------------+--+
| _c0 |
+----------------------------+--+
| Persi és Levon Cnatówóeez |
+----------------------------+--+
1 row selected (0.104 seconds)
0: jdbc:hive2://localhost:10000>
答案 1 :(得分:0)
来自Hive文档:
regexp_replace(string INITIAL_STRING,string PATTERN,string REPLACEMENT)
返回将INITIAL_STRING中与PATTERN中定义的java正则表达式语法匹配的所有子字符串替换为REPLACEMENT实例的字符串。例如,regexp_replace(" foobar"," oo | ar","")返回' fb。'请注意,在使用预定义的字符类时需要注意:使用' \ s'因为第二个参数将匹配字母s; ' \ S'有必要匹配空白等。
参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
你应该这样做:
select REGEXP_REPLACE('“Persi és Levon Cnatówóeez', '^[\!-\/\[-\`]+', '')
我没有Hive正确知道尝试此代码,但这个想法应该是正确的。在第二个字段中,您必须放置要替换的内容,而不是要保留在字符串中的内容。在这种特殊情况下,这应该删除(用空字符串''替换)行开头的每个后续字符,即在!到/,或在[指向ASCII表格的范围内。