正则表达式

正则表达式

入门

字符组 []

允许匹配一组可能出现的字符:例如我们想匹配Python和python可以使用:[Pp]ython

区间 -

为了匹配一串区间,比如数字区间:我们使用[0-9]来匹配,使用[a-z]来匹配小写字母

特殊字符

如果我们想匹配-则需要使用转义字符\来匹配 ,例如[\-]来匹配-字符

取反 ^

如果我们想匹配非数字可以[^0-9]

一些快捷匹配字符

实例描述
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
?匹配一个字符零次或一次,另一个作用是非贪婪模式
+匹配1次或多次
*匹配0次或多次
\b匹配一个长度为0的子串
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。

匹配开头和结尾 ^ $

例如:有一段python 123456 python 我们匹配开头的python, ^python 如果想匹配python结尾的则使用python$

任意字符 .

. 代表字符匹配任意的单个字符,只能出现在[]外面

可选字符 ?

?表示某个字符,可以是一个字符,字符组或者其他的基本单元,表示该字符出现一次或者0次

匹配多个数据

  • 在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。

  • 如果我们想要一个数字出现a-b次数,则使用{a,b}来匹配,在后面加?会优先匹配有a次数的

开闭区间

  • 如果没有边界则使用 \d{1,} 用来匹配一个或者无数个
  • 使用+可以匹配1到无数个
  • 使用*可以匹配0到无数个

基础总结

实例描述
[Pp]ython匹配 “Python” 或 “python”。
rub[ye]匹配 “ruby” 或 “rube”。
[abcdef]匹配中括号内的任意一个字母。
[0-9]匹配任何数字。类似于 [0123456789]。
[a-z]匹配任何小写字母。
[A-Z]匹配任何大写字母。
[a-zA-Z0-9]匹配任何字母及数字。
[^au]除了au字母以外的所有字符。
[^0-9]匹配除了数字外的字符。

进阶

分组

  • ()提取数据:可以使用<p>(.*)</p>提取p标签中的数据

  • |或者:可以使用(.jpg | .gif) 提取.jpg或者.gif

  • (?:表达式):表示使用分组功能但是不捕获数据

  • 分组回溯引用:\N 可以表示引用标号为N的分组,例如我们可以使用([a-z])([a-z])[a-z]*\2\1来匹配形式如ab开头,结尾为ba的词组。

分组部分可以到编程胶囊去联系和观看具体的示例,这个网址写的是非常详细和完备的。

断言

很多人也称先行断言和后行断言为环视,也有人叫预搜索,其实叫什么无所谓,重要的是知道如何使用它们!

先行断言
  1. 正向先行断言

    正向先行断言:(?=表达式),指在某个位置向右看,表示所在位置右侧必须能匹配表达式

    (?=.*?[a-z])(?=.*[A-Z])(?=.*?[0-9]).{8,}使用这个可以匹配至少一个大写字母一个小写字母一个数字且至少8个字符的密码强度判断。

  2. 反向先行断言

    反向先行断言(?!表达式)的作用是保证右边不能出现某字符。

后行断言
  1. 正向后行断言

    正向后行断言:(?<=表达式)指在某个位置向左看,表示所在位置左侧必须能匹配表达式

  2. 反向后行断言

    反向后行断言:(?<!表达式),指在某个位置向左看,表示所在位置左侧不能匹配表达式

断言部分可以到编程胶囊去联系和观看具体的示例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

turbolove

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

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

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

打赏作者

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

抵扣说明:

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

余额充值