Hive正则表达式
前段時(shí)間,在我們數(shù)據(jù)開(kāi)發(fā)的過(guò)程中,因?yàn)闆](méi)有現(xiàn)成的數(shù)據(jù)表,導(dǎo)致數(shù)據(jù)沒(méi)有辦法直接取,需要解析日志的內(nèi)容,從日志里面拿到我們想要的數(shù)據(jù),但是日志的內(nèi)容并沒(méi)有那么的規(guī)則,這個(gè)時(shí)候,正則表達(dá)式就展現(xiàn)出很大的優(yōu)勢(shì),正好我也把正則表達(dá)式溫習(xí)實(shí)踐了一遍,正好整理下來(lái)。
hive支持的正則表達(dá)式有三種,分別是regexp、regexp_replace、regexp_extract
一、regexp
1,語(yǔ)法格式: A REGEXP B
釋義:A是需要匹配的字符串,B是正則表達(dá)式字符串
返回結(jié)果:boolean或null
示例SQL:
返回結(jié)果:
true false二、regexp_replace
1,語(yǔ)法格式: regexp_replace(string A, string B, string C)
2,釋義:將字符串A中的符合java正則表達(dá)式B的部分替換為C。注意,在有些情況下要使用轉(zhuǎn)義字符,類(lèi)似oracle中的regexp_replace函數(shù)。
示例SQL:
返回結(jié)果:
四川辦第一名三、regexp_extract
1,語(yǔ)法格式:regexp_extract(string subject, string pattern, int index)
2,釋義:將字符串subject按照pattern正則表達(dá)式的規(guī)則拆分,返回index指定的字符,index從1開(kāi)始計(jì)。
示例SQL:
返回結(jié)果:
1四、常用的正則表達(dá)式規(guī)則:
1,元字符匹配
(.) 表示匹配除換行符以外的任意字符。 (\w) 表示匹配字母、下劃線(xiàn)、數(shù)字 (\W匹配漢字) (\d) 表示匹配數(shù)字 (\s) 表示匹配任意的空白符(tab 換行 空格) ([ ]) 表示匹配方括號(hào)中任一字符 ([^匹配內(nèi)容]) 表示不匹配方括號(hào)中任一字符2,位置匹配
(^) 表示匹配字符串的開(kāi)始,空值:^$ ($) 表示匹配字符串的結(jié)束 (\b) 表示匹配單詞的開(kāi)始或結(jié)束。 (\B) 表示匹配非單詞的開(kāi)始或結(jié)束3,頻率匹配
(*) 表示匹配重復(fù)0次或多次 (+) 表示匹配重復(fù)一次或更多次 (?) 表示匹配重復(fù)0次或1次 ({n}) 表示匹配重復(fù)n次 ({n,}) 表示重復(fù)n次或更多次 ({n,m}) 表示重復(fù)n到m次正則表達(dá)式可以根據(jù)不同的需求,找到適合自己的函數(shù),以及規(guī)則一起搭配使用。
正則表達(dá)式的使用就分享到這里了,我是喵~~,一起交流學(xué)習(xí)哇!
總結(jié)
- 上一篇: arduino小车电机不转_一文解析—电
- 下一篇: 矩阵的行列式,证明|A||B|=|AB|