一文速通的正则表达式

正则表达式

  • 是由普通字符(例如字符 a 到 z)以及元字符组成的字符串
  • 该字符串描述了按照某种模式去匹配要被搜索的字符串
普通字符
  • 包括没有显式指定为元字符的所有可打印不可打印字符
  • 即包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号
  • 普通字符只能匹配它自己
特殊字符: 字符’'加一个字符(某些)组成的字符
字符描述
\w匹配字母、数字及下划线
\W匹配不是字母、数字及下划线的字符
\d匹配任意数字,等价于 [0-9]
\D匹配任意非数字的字符
\A匹配字符串开头
\Z匹配字符串结尾,如果存在换行,只匹配到换行前的结束字符串
\z匹配字符串结尾,如果存在换行,同时还会匹配换行符
\s匹配任何空白字符
\S匹配任何非空白字符
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符

最后四个并不常用

元字符
  • 如果要匹配元字符本身的话要在该字符前加’’ 例如:. 可以匹配 .
字符描述
^xxx如果字符串以xxx开头,匹配xxx(是普通字符)
yyy$如果字符串以yyy结尾,匹配yyy(与xxx一样)
*匹配前面的单字符零次或多次
+匹配前面的单字符一次或多次
?匹配前面的单字符零次或一次
{n}匹配左侧紧邻的单字符 n 次(n>=0)
{n,}至少匹配左侧紧邻的单字符 n 次(n>=0)
{n,m}尽可能多的匹配左侧紧邻的单字符,但匹配次数间于[n,m]之间 (0<=n<=m)
.匹配除换行符之外的任何一个字符
a|b先匹配a,匹配不上,在匹配b
[xyz]匹配[]所包含的任意一个字符
[^xyz]匹配[]未包含的任意字符, 即与[xyz]匹配结果相反
[a-z]匹配指定范围(这里是a-z)内的任意字符
[^a-z]匹配任何不在指定范围内的任意字符, 即与[a-z]匹配结果相反
()匹配括号内的表达式(会被标记,被标记表达式会依次对应每一个分组)
贪婪与非贪婪
  1. 贪婪模式:尽可能多的匹配所搜索的字符串。
  • 元字符 (*, +, ?, {n}, {n,}, {n,m})的匹配模式是贪婪的
pattern  = '^He.*(\d+).*Demo$'
content = 'Hello 1234567 World_This is a Regex Demo'

# 当.* 匹配到 Hello 后面的空白字符时,而后面的字符 \d+ 也能可以匹配,它会继续匹配,而不是由\d+来匹配——贪婪
  1. 非贪婪模式:尽可能少的匹配所搜索的字符串
  2. 贪婪的元字符后面紧跟元字符**?**时他们是非贪婪的
patern = '^He.*?(\d+).*Demo$'
content = 'Hello 1234567 World_This is a Regex Demo'
# 当.*? 匹配到 Hello 后面的空白字符时,而后面的字符 \d+ 恰好可以匹配,那么这里 .*? 就不再进行匹配,由\d+ 去匹配后面的数字  ——非贪婪
技巧
  • 匹配任何字符: [\s\S]
继续学习
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳衣白卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值