我設計一個正則表達式匹配以下三種結構中的一種:正則表達式返回空輸出蜂巢
僞代碼:
number.number.number.number e.g. 102.100.1.1
number.number.number e.g. 1.2.4
number.number. e.g. 1.2
正則表達式到目前爲止我是這樣的:
\d{1,3}\\.\d{1,3}\\.\d{1,3}\\.\d{1,3}|\d{1,3}\\.\d{1,3}\\.\d{1,3}|\d{1,3}\\.\d{1,3}}
我正在運行以下查詢來測試此操作:
select
regexp_extract('172.1.1.1', '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\d{1,3}\.\d{1,3}\.\d{1,3}|\d{1,3}\.\d{1,3}')
from
dual
Regex101 suggests this should work,as does RegExr。
但是,結果爲空白。這裏被忽視的是什麼?爲什麼這不起作用?
只得到第二組是非常可能的,你需要雙擊逃生斜線。請參閱https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF。 「請注意,在使用預定義的字符類時需要注意:使用'\ s'作爲第二個參數將匹配字母s;'\\ s'是匹配空格等所必需的。」 –
我試過的第一件事。我已經嘗試了同時轉義所有斜槓(\),並且只轉義斜線點(\)。兩者似乎都不起作用並返回空白 select regexp_extract('172.1.1.1','\\ d {1,3} \\ \\ d {1,3} \\ d {1,3} \\ d {1,3} |。。。\\ d {1,3} \\ d {1,3 } \\ d {1,3} |。。\\ d {1,3} \\ d {1,3} ') 從 雙 選擇 REGEXP_EXTRACT(' 172.1.1.1 ','\ d {1,3} \\。\ d {1,3} \\。\ d {1,3} \\。\ d {1,3} | \ d {1,3} \\ 。\ d {1,3} \\。\ d {1,3} | \\ {1,3} \\。\ d {1,3}') from dual – Tminer
添加索引參數(第3個)設置爲「0」。它會改變結果嗎? –