1。regexp_extract

语法:    regexp_extract(string subject,  string pattern,  int index)

返回值: string

说明:  将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

第一参数:   要处理的字段

第二参数:    需要匹配的正则表达式

第三个参数:

  • 0是显示与之匹配的整个字符串
  • 1 是显示第一个括号里面的
  • 2 是显示第二个括号里面的字段...

注意,在有些情况下要使用转义字符(双斜杠了‘\\’)。

举例:

select
regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',0), -- x=18abc
regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','^x=([a-z]+)([0-9]+)',0), -- x=a3 regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',0), -- id=522228774076
regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',1), -- 522228774076 regexp_extract('http://a.m.taobao.com/i41915173660.htm','i([0-9]+)',0), -- i41915173660
regexp_extract('http://a.m.taobao.com/i41915173660.htm','i([0-9]+)',1) -- 41915173660 from test.dual;

正则匹配字符解释:

  • ^ 表示开头
  • $ 表示结尾
  • . 表示任意字符
  • * 表示任意多个

2。手机号清洗:

regexp_replace(mobile,'[^0-9]','')    regexp '1[0-9]{10}'  返回true,则为好的手机号。

3。其他两个函数split 和 parse_url

也可以做简单的url 关键字提取, 如下

select
'xinli.ewt360.com/Psychology/Search?keyword=abc?语文数学123' url,
split(split(lower('xinli.ewt360.com/Psychology/Search?keyword=abc?语文数学123/from'),'keyword=')[1],'/')[0] split1, -- 结果: abc?语文数学123
split(parse_url(concat('http://',lower('xinli.ewt360.com/Psychology/Search?keyword=abc?语文数学123/from')), 'QUERY','keyword'),'/')[0] parse_url1, regexp_extract(lower('xinli.ewt360.com/Psychology/Search?keyword=abc?语文数学123'),'keyword=(.+)',1), -- 还未找到办法
regexp_extract(lower('xinli.ewt360.com/Psychology/Search?keyword=语文数学'),'keyword=(^[\\u4e00-\\u9fa5]$)+') -- 中文匹配,还未验证

4.  https://blog.csdn.net/lsr40/article/details/82223923  

Hive 正则匹配函数 regexp_extract的更多相关文章

  1. Hive 正则匹配函数

    正则匹配字符解释: ^ 表示开头 $ 表示结尾 . 表示任意字符 * 表示任意多个 regexp_extract函数 语法:    regexp_extract(string subject,  st ...

  2. javascript中的正则匹配函数exec(),test(),match()

    test() var str = "cat";var reStr = /cat/;alert(reStr.test(str)); 输出为:true 它的返回值为true or fa ...

  3. php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.

    有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...

  4. Python3正则匹配re.split,re.finditer及re.findall函数用法详解

    这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.finda ...

  5. PHP模板引擎正则替换函数 preg_replace 与 preg_replace_callback 使用总结

    在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace(),加上正则修饰符 /e,就能够执行强大的回调函数,实现模板引擎编译(其实就是字符串替换). 详情介绍参考博文:P ...

  6. php 正则匹配中文(转)

    我使用正则表达式来匹配中问的时候,出现了无法匹配的问题,问题如下 PCRE does not support \L, \l, \N{name}, \U, or \u at offset 2 我原来的匹 ...

  7. php中的正则函数主要有三个-正则匹配,正则替换

    php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...

  8. Aho-Corasick算法、多模正则匹配、Snort入门学习

    希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...

  9. python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法

    python_way day18 html-day4 1.Django-路由系统   - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...

随机推荐

  1. 2014 Super Training #6 G Trim the Nails --状态压缩+BFS

    原题: ZOJ 3675 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3675 由m<=20可知,可用一个二进制数表 ...

  2. Unity3D开发赛车Demo遇到的问题

    遇到问题 在3D Max中导出的跑车在Unity中轴向不对,不知有没有朋友遇到过呢? 切换坐标系统 在Unity3D中按X键,切换坐标系统 车轮方向变了 运行游戏之后,赛车的车轮方向变歪了 车依然能跑 ...

  3. jsp 微信公众平台 token验证(php、jsp)(转载)

    微信公众平台现在推出自动回复消息接口,但是由于是接口内容用的是PHP语言写的,很多地方操作起来让本人这个对java比较熟悉的小伙很别扭,所以仿照PHP的接口代码做了一套jsp语言编写的接口. 首先先把 ...

  4. 16进制色值转换成RGB

    #51147f  转换成RGB ,5*16+1 ,1*16+4,7*16+15 #A9A9A9 转换成RGB ,A*16+9 ,A*16+9,A*16+9

  5. Cursor的各种效果

    总结之后的Cursor的各种效果: http://sandbox.runjs.cn/show/bbwoyn0c http://css-cursor.techstream.org/ 源代码如下: < ...

  6. 六、动态增加方法Category

    1.概念:Category可以动态为已经存在的类增加一个方法,可以不改动原有的类. 2. 如何创建一个Category类创建一个文件,选择Objective-C category,点next取名时,要 ...

  7. [转]在Ubuntu 下安装Redis 并使用init 脚本启动

    1. 下载安装:   cd /tmp wget http://redis.googlecode.com/files/redis-2.2.4.tar.gz tar -zxf redis-2.2.4.ta ...

  8. freemarker语法简介

    ftl是一种模板标记语言,用于渲染数据,输入html结构.语法简介如下: ${book.name} ${book.name?if_exists} //值是否存在 ${book.name??} //值是 ...

  9. 系统级IO实践学习记录

    代码分析 cp1.c 功能:复制文件. #include <stdio.h>#include <stdlib.h>#include <unistd.h>#inclu ...

  10. HoloLens开发手记 - Unity之摄像头篇

    当你穿戴好HoloLens后,你就会处在全息应用世界的中心.当你的项目开启了"Virtual Reality Support"选项并选中了"Windows Hologra ...