https://www.runoob.com/regexp/regexp-syntax.html
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
把一个由子母和数字组成的字符串,提取所有的字母串和数字串。简单想了下可以写udf解决,也可以用正则处理。采用正则处理的实例如下:
-
--字符串'sdfsd1232sdf324',拆成'sdfsd','1232','sdf','324'
-
select explode(split(regexp_replace('sdfsd1232sdf324','[0-9]+',','),','))
-
union all
-
select explode(split(regexp_replace('sdfsd1232sdf324','[a-z]+',','),','))
该问题解决起来不算难,借着这个问题想要整理下Hive中的正则表达式的使用。
正则表达式基本语法
普通字符
普通字符包括没有显示指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母,所有数字,所有标点符号和其他一些符号。
非打印字符
非打印字符也可以是正则表达式的组成部分。下面列出表示非打印字符的转义序列:
字符 | 描述 |
---|---|
\cx | 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
\f | 匹配一个换页符。等价于\x0c 和\cL |
\n | 匹配一个换行符。等价于\x0a和\cJ |
\r | 匹配一个回车符。等价于\x0d和\cM |
\s | 匹配任何空白字符 |