hive:正则:匹配中文/英文/数字(REGEXP 和 rlike)

目录

1:匹配数字

 数字在0到3位

数字固定有6位

第二位为数字6的,有且只有两位数

第二位为数字6的,但不只有两位数

 第二位为数字6的,后边再追加1到2位数字

 手机号|邮箱中含有手机号的邮箱

 2:匹配中文

 纯中文(不含有英文和数字的)

含有中文的(只要含有汉字都可以)

不含有中文

3:匹配英文

 只包含小写英文

 不含有任何小写英文字符

任何包含英文的(大小写都包括)

不含有任何英文字符的(大小写都包括)

 表达式实例介绍


数据:

Java开发工程师
Java工程师
海外BD岗
移动web研发工程师
DBA工程师
JAVA高级开发工程师
PHP开发工程师
android资深开发经理
课程顾问/sales manager
EPM
认证工程师
品牌总监
分时租赁总经理
销售总经理
硬件测试工程师
薪酬管理岗
算法工程师
大区销售总监
财务经理
研发总监
110100
110100
130100
130100
160100
200500
160100
110100
110100
110100
4849
4696
4861
4741
4593
4741
0
0
0
4523
0
0
4523
0
3720

1:匹配数字

 数字在0到3位

select * from tmp.testregexp  where name rlike '^\\d{0,3}$';

0
181
0
181
181
181
181
...

数字固定有6位

select * from tmp.testregexp  where name rlike '^\\d{6}$';

957031
957031
957031
100014
100014
957031
...

第二位为数字6的,有且只有两位数

select * from tmp.testregexp  where name rlike '^\\d[6]$';

56
26
26
26
66
26
16
...

第二位为数字6的,但不只有两位数

select * from tmp.testregexp  where name rlike '^\\d[6]\\d+$';

26532
26799
26799
26495
9661
9664
26601
26978
...

 第二位为数字6的,后边再追加1到2位数字

select * from tmp.testregexp  where name rlike '^\\d[6]\\d{0,2}$';

8642
161
8699
165
5689
8604
5626
8669
...
qt: 

输出 true:

SELECT  '123456' rlike '^\\d+$';
SELECT  '0' rlike '^\\d+$';
SELECT  '1234567890' rlike '^\\d+$';

输出false:

SELECT  '123456a' rlike '^\\d+$';
SELECT  'aa123' rlike '^\\d+$';
SELECT  '中文123' rlike '^\\d+$';
SELECT  'aaff中' rlike '^\\d+$';

 手机号|邮箱中含有手机号的邮箱

数据展示:

匹配的语句为:

select email from os.users where split(email,'@')[0]  rlike '^0?1[3456798]\\d{9}$' limit 10

 2:匹配中文

 纯中文(不含有英文和数字的

select * from tmp.testregexp  WHERE name not REGEXP '[u0391-uFFE5]' 

结果: 

认证工程师
品牌总监
分时租赁总经理
销售总经理
硬件测试工程师
薪酬管理岗
算法工程师
大区销售总监
财务经理
研发总监

含有中文的(只要含有汉字都可以

select * from tmp.testregexp  where regexp(name,'[\\u4E00-\\u9FFF]+')

Java开发工程师
Java工程师
海外BD岗
移动web研发工程师
DBA工程师
JAVA高级开发工程师
PHP开发工程师
android资深开发经理
课程顾问/sales manager
认证工程师
品牌总监
分时租赁总经理
...

不含有中文

select * from tmp.testregexp  where not regexp(name,'[\\u4E00-\\u9FFF]+')

EPM
110100
110100
130100
130100
160100
200500
160100
...

3:匹配英文

 只包含小写英文

select * from tmp.testregexp where name  rlike '[a-z]+'

结果:

java
python
java
...

 不含有任何小写英文字符

select * from tmp.testregexp where name not  rlike '[a-z]+' 

结果:

海外BD岗
DBA工程师
JAVA高级开发工程师
PHP开发工程师
EPM
343434
...

任何包含英文的(大小写都包括)

select * from tmp.testregexp where name  rlike '([a-z]|[A-Z])+' 

结果:

Java开发工程师
Java工程师
海外BD岗
移动web研发工程师
DBA工程师
JAVA高级开发工程师
PHP开发工程师
android资深开发经理
课程顾问/sales manager
EPM
HRVP
Java
java
...

不含有任何英文字符的(大小写都包括)

select * from tmp.testregexp where name not  rlike '([a-z]|[A-Z])+' 

结果:

算法工程师
大区销售总监
财务经理
研发总监
110100
110100
130100
...

4.表达式实例介绍

^\d+(\.\d+)?

^ 定义了以什么开始

\d+ 匹配一个或多个数字

? 设置括号内的选项是可选的

\. 匹配 "."

可以匹配的实例:"5", "1.5" 和 "2.21"。
 

  • 2
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值