1
這可能是一個愚蠢的問題,但我似乎無法克服這個自己 -HiveQL - 提取字符串的結尾相匹配的模式正則表達式
我有串的領域,這與某個時候結束3個數字由逗號分隔,例如
- 2353535.123213.124 - data.2354234.1324.1314 - data.old-24234.2341.4325
有時不是
- aaaa.53535 - data.old-3521 - data.AFG34fsaf34
每當發生第一種情況時,我需要從字符串的末尾提取3數字模式。含義:
- 2353535.123213.124 -> 2353535.123213.124 - data.2354234.1324.1314 -> 2354234.1324.1314 - data.old-24234.2341.4325 -> 24234.2341.4325 - aaaa.53535 -> Do nothing
這可能嗎? 如果不是通過hiveQL(儘管這是可取的),即使是一個java正則表達式提取也是有用的(在自定義UDF中使用)。
謝謝!雖然在演示中看起來不錯,但我沒有在Hive中使用它:「select regexp_extract('a.b-983475.9900291.556901','\\ d +(?:\\。\\ d +){2} $');生成 FAILED:SemanticException [Error 10014]:Line 1:7錯誤的參數''\\ d +(?:\\。\\ d +){2} $'':org.apache.hadoop.hive.ql.metadata。 HiveException:無法執行方法public java.lang.String org.apache.hadoop.hive.ql.udf.UDFRegExpExtract.evaluate(java.lang.String,java.lang.String)on object ... – KeshetE
@KeshetE你可能需要'regexp_extract('ab-983475.9900291.556901','\\ d +(?:\\。\\ d +){2} $',0)' – vks
沒錯!謝謝! – KeshetE