我一直在試圖弄清楚如何刪除多個非字母數字或非數字字符,或者只返回數字字符一個字符串。我試過了:如何使用Hive刪除非字母數字或非數字字符REGEXP_EXTRACT()函數
SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name
但它返回'7',而不是'789'。
我也試圖刪除非數字字符使用不符合語法^((?!正則表達式)。)* $:
SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii
可以REGEXP_EXTRACT返回多個匹配?我真正想要做的是清理我的數據,只包含數字或字母數字字符。這似乎有助於刪除不好的字符,但它不是像[0-9]這樣的字符範圍。 regexp_replace(string,' ','')
編輯:下面的查詢能夠返回'7789',這正是我正在尋找。
SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name
感謝您的提示,這適用於我的例子。如果你有'7X789',它似乎不工作,因爲它只返回'7'。你知道在這種情況下你的解決方案是否可以擴展到返回7789? – user1152532
@ user1152532 - 嘗試替換方法。例如,'regexp_replace(「7(-X78T9)RMM」,「[^ 0-9] +」,「」)'應該返回'7789'。正則表達式包含一個量化的(+)負([^])類,意味着不是0-9之間的數字。它將全局替換所有非數字字符。這是根據文檔。我無法測試它。 – sln
完美的工作......謝謝@sln。看起來我可以在REGEX上使用一個複習 - 你能推薦任何好的網站/資源來加快速度嗎? REGEXP Basics的谷歌搜索結果似乎都指向了像90年代那樣的網站。 – user1152532