正则表达式基础

前言

在学习MySQL时,需要用到SQL语句,而SQL语句又常常会用到正则表达式(Regex),因此写下这篇文章,方便日后查看,其实正则表达式并不难。


用途

正则表达式本质上是字符串,它是一种匹配给定文本的模式。如用于检验输入的邮箱是否合法等多方面均有应用。


模式以及描述

模式描述
^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
[…]字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^…]负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
p1|p2|p3匹配 p1 或 p2 或 p3。例如,‘z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。
?匹配前面的子表达式0次或1次。例如,-?[0-100]能够匹配-100和100之间任意整数。在+、*后可以让其后的匹配模式尽早匹配,如(.+?)
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
( )将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。改变优先级、定义提取组两个作用。这时(ab)可看作一个字符,(ab)+,即表示匹配ab或abababab……

部分资料来自:https://www.runoob.com/mysql/mysql-regexp.html


实例

模式
例子
^example.*^为匹配输入字符串的开始位置。这个正则表达式可以匹配字符串"example balabalabala",但不能匹配字符串"balabala example"。 . 为匹配任意单个字符,*为0次或多次匹配,因此 .* 为匹配任意长度的字符串
.*example$$为匹配输入字符串的结束位置。这个正则表达式可以匹配以example结尾的字符串"balabalabalaexample",但不能匹配字符串"example balabala"
[1-9]
[a-z]
[1-9a-zA-Z]
匹配数字1到9
匹配字母a到z
匹配大小写字母和数字1到9
\d
\.
\d+
\d{1,18}
\d*
匹配一位数字,由于d可表示字母d,所以要加\进行转义
匹配小数点 .
匹配\d一次或多次,也就是匹配 纯数字的字符串
匹配1到18位数字
匹配0到任意位数字,相当于\d{0,}。这里没写右区间代表任意位数
\D
\s
\S
\w
\W
匹配一位非数字,等同于[^0-9]
匹配一位换行符、Tab制表符等空白字符
匹配一位非空白字符
匹配一位字母或数字或下划线或汉字,即匹配能组成词的字符
等同于[^\w]
^\d{3,4}-?\d+$表示被匹配的字符序列由三至四位数字组成,由于长途区号的连字符“-”可有可无,所以这里使用“?”元字符进行说明。由于连字符“-”在正则表达式中有特殊含义(表示范围,比如[0-9]),所以要对其进行转义。

常用正则表达式

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值