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. RDLC直接打印帮助类

    代码 /// <summary> /// 打印帮助类 /// </summary> public class PrintHelper { private int m_curre ...

  2. WPF技巧-Canvas转为位图

    转自:http://www.cnblogs.com/tmywu/archive/2010/09/14/1825650.html 在WPF中我们可以将Canvas当成一种画布,将Canvas中的控件当成 ...

  3. Swift3.0 进制转换

    Swift3.0 进制转换 模块可以直接使用,写的不是很好,欢迎来喷 // Data -> HexStrings func dataToHexStringArrayWithData(data: ...

  4. 在opencv3中的机器学习算法练习:对OCR进行分类

    OCR (Optical Character Recognition,光学字符识别),我们这个练习就是对OCR英文字母进行识别.得到一张OCR图片后,提取出字符相关的ROI图像,并且大小归一化,整个图 ...

  5. Java环境解析apk文件信息

    概述:Java解析apk文件,获取apk文件里的包名,版本号,图标文件等; 功能:可以提供给windows和linux平台使用; 原理:利用aapt.exe或者aapt这些anroid平台解析apk文 ...

  6. Linux 读书笔记 一

    一.Linux 简介 实验介绍 本节主要介绍 Linux 的历史,Linux 与 Windows 的区别等入门知识.如果你已经有过充分的了解,可以跳过本节,直接进入下一个实验. 一.Linux 为何物 ...

  7. 三种实例化委托的方式(C# 编程指南)

    1.定义的委托和方法 delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } 2 ...

  8. OOP多态和继承要点

         早期绑定和多态 C#函数重载的签名规则是用参数的类型和数量判断,而不是函数的名字. 函数返回值不作为重载签名. 修饰符不作为签名的一部分,如static 同函数中,多个参数名称要唯一 ref ...

  9. grootJs 系统常用API接受

    groot.absUrl(url) 把相对路径转换为绝对路径 groot.model 把vm对象转换为json 去掉系统生成的的属性groot.model groot.log 输出到控制台 兼容低版本 ...

  10. 推荐一个 angular 图像加载插件

    推荐一个简单的 Angular 图片加载插件:vgSrc,插件根据图片资源的不同加载状态,显示不同图片,亲测兼容IE-8. 使用 推荐使用 bower 加载: bash bower install v ...