正则表达式 全集

本文介绍了正则表达式在处理字符串中的应用,包括中文字符匹配、电话号码验证、密码格式检查以及日期格式验证等。同时详细讲解了Hive中的regexp_replace和regexp_extract函数用法,通过实例展示了如何提取和替换字符串中的特定部分,如汉字、字母、数字等。此外,还探讨了不同匹配模式和次数控制在实际操作中的运用。
摘要由CSDN通过智能技术生成

链接 正则表达式解释https://tool.oschina.net/uploads/apidocs/jquery/regexp.html

常用正则表达式:常用正则表达式

中文字符的正则表达式: [\u4e00-\u9fa5]

国内电话号码(0511-4405222、021-87888822): \d{3}-\d{8}|\d{4}-\d{7}

密码(以字母开头,长度在6~18之间,只能包括字母、数字跟下划线):^[a-zA-Z]\w{5,17}$

帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

日期格式:^\d{4}-\d{1,2}-\d{1,2}

一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

hive中正则函数的用法:
regexp_replace用法

  1. 截取字符串中的汉字部分:
    举个栗子:select regexp_replace('七夕节comming!来啦','([^\\u4E00-\\u9FA5]+)','') from dual;
    结果:七夕节来啦
    2.截取字符串中的字母和数字部分:([^xyz] 不匹配这个集合中的任何一个字符)

举个栗子:select regexp_replace('wo爱你123CHINA中国!','([^a-zA-Z0-9]+)','') from dual
结果:wo123CHINA
 3. 指明两项之间的一个选择。例子’([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。

栗子:SELECT regexp_replace('七夕节Coming666!','([a-z]+|[A-Z]+|[0-9]+)','') from dual

结果:七夕节!
4. 匹配一个非字数字符(/D 等同于 [^0-9])
举个栗子1:select regexp_replace('我爱你123zhongguo666!','(\\D+)','') from dual
结果:123666

regexp_extract用法(参数3取决于参数2()的数量,从0开始)
5. 截取字符串中的数字部分([xyz] 匹配这个集合中的任何一个字符)(/d 匹配一个字数字符)
举个栗子:

select regexp_extract('七夕节coming666','([0-9]+)',1) from dual
      or select regexp_extract('七夕节coming666','(\\d+)',1) from dual

结果:666
6.截取字符串中的字母部分
举个栗子:select regexp_extract('七夕节Coming666','([a-zA-Z]+)',1) from dual;
结果:Coming
另注意一种方法:(\W)匹配汉字 (\w) 表示匹配字母、下划线、数字
例如:select regexp_extract('产险一级机构02','(\\W*)(\\w*)',1) from dual
结果:产险一级机构
例如:select regexp_extract('产险一级机构02','(\\W*)(\\w*)',2) from dual
结果:02
7 {n} 精确匹配n次
举栗子1:select regexp_extract('我爱你123zhongguo666!','(你)(.*?)(6)',0) from dual
结果:你123zhongguo6
举栗子2:select regexp_extract('我爱你123zhongguo666!','(你)(.*?)(6)',1) from dual
结果:你
举栗子3:select regexp_extract('我爱你123zhongguo666!','(你)(.*?)(6)',2) from dual
结果:123zhongguo
举栗子4:select regexp_extract('我爱你123zhongguo666!','(你)(.*?)(6)',3) from dual
结果:6
举个栗子2:select regexp_extract('152天内有67天无通话记录','([0-9]+)([^0-9]+)([0-9]+)',0) from dual
结果:152天内有67
举个栗子3:select regexp_extract('152天内有67天无通话记录','([0-9]+)([^0-9]+)([0-9]+)',1) from dual
结果:152
举个栗子4:select regexp_extract('152天内有67天无通话记录','([0-9]+)([^0-9]+)([0-9]+)',2) from dual
结果:天内有
举个栗子5:select regexp_extract('152天内有67天无通话记录','([0-9]+)([^0-9]+)([0-9]+)',3) from dual
结果:67

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值