正则表达式:跨语言的一种写法(sql、java、js、python )
书写正则表达式的规则是一模一样的,只是每一种语言调用的方式不同而已。
# eg:
# 模糊查询: like regexp 两种
# 1、查询名字以l开头,以i结尾的数据
select * from stu where sname like 'l%i';
# 也可以使用正则表达式: 不太满足条件
select * from stu where sname regexp '^l|i$';
# . 表示任意字符除了\n 以外
# * 表示出现 0 ~ 多次
select * from stu where sname regexp '^l.*i$';
# 练习:书写一个手机号码的正则表达式
^\d{11}$ -- 不太精准
^1[3456789]\d{9}$ -- 不太精准
# 查询student 表中 ,手机号码正确的数据
select * from student where phone regexp '^1[3456789]\d{9}$';
# 练习:邮箱的正则表达式
# 838700991@qq.com laoyan@163.com laoli@yeah.net.cn
^.+@.+\..+$
# 练习正则的⽤法(此处没有表,只是⼀个sql⽽已,通过返回1还是0表示是否匹配)
mysql> select 'hello' regexp '^he';
+----------------------+
| 'hello' regexp '^he' |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.06 sec)
mysql> select 'hello' regexp '^hh';
+----------------------+
| 'hello' regexp '^hh' |
+----------------------+
| 0 |
+----------------------+
1 row in set (0.08 sec)
mysql> select '838700991@qq.com' regexp '^.+@.+\..+$';
+-----------------------------------------+
| '838700991@qq.com' regexp '^.+@.+\..+$' |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
1 row in set (0.06 sec)
mysql> select '838700991qq.com' regexp '^.+@.+\..+$';
+----------------------------------------+
| '838700991qq.com' regexp '^.+@.+\..+$' |
+----------------------------------------+
| 0 |
+----------------------------------------+