正则表达式

正则表达式:

  官方定义: 正则表达式是对字符串操作的一种逻辑公式, 就是事先定义好的一些有特定字符, 以及这些特定字符的组合, 组成一个规则字符串,次字符串用来对字符串进行过滤.

  正则表达式只能和字符串相关.

  字符组:  [ 字符组 ]

    在同一个位置上可能出现的各种字符组成一个字符组,用 [ ] 表示, 字符可以有很多种 : 数字, 字母, 标点符号等

元字符 匹配内容
.   匹配除换行符以外的其他任意字符
w 匹配数字字母下划线
s 匹配任意空白符
d 匹配数字
匹配换行符
匹配制表符
 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结束
W 匹配非数字字母下划线
S 匹配非空白符
D 匹配非数字
a|b 匹配a或匹配b
() 匹配括号内的表达式,表示一个组
[ ] 匹配字符组内的字符
[^ ] 匹配除了字符组内的所有字符

  量词 :

量词 用法说明
* 至少重复0次或者重复n次
+ 至少重复1次或者重复n次
? 重复0次或者1次
{ n } 重复n次
{ n, } 重复n次或者更多次
{ n, m } 重复n到m次

  贪婪匹配 : 

    在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

正则 带匹配字符 匹配结果 说明
<.*> <script>....<script> <script>....<script>

默认为贪婪匹配,

会匹配符合匹配规则中最长的字符串

<.*?> <script>....<script>

<script>

<script>

表达式后加上?意思

将贪婪匹配转换为非贪婪匹配,

会在符合匹配规则的情况下

尽量匹配最短的字符串

  非贪婪匹配 :

*? 重复任意次,但会尽可能的少重复
+? 重复一次或者更多次,但会尽可能的少重复
?? 重复0次或者1次,但会尽可能的少重复
{ n, m }? 重复n到m次,但会尽可能的少重复
{ n, }? 重负n次后者更多次,但会尽可能的少重复

  .*?的用法 :

    . 是去任意字符

    * 是取0到无穷

    ? 表示非贪婪模式

    大多情况用在 : .*?x  #意思就是去前面任意的任意字符,直到一个x出现.

  转义符

    正则表达式中,有很多有特殊意义的元字符,比如 : d , s等, 如果要在正则中匹配正常的 ' d '而不是数字,就需要对 ' ' 进行转义,变成 ' \ '.

正则 待匹配结果 匹配结果 说明
d d False 因为在正则表达式中 ' '是具有特殊意义的字符,要匹配 ' d '本身,表达式 d 无效
\d d True 转移 后变成 \ ,可以匹配
\\d \d True python中,字符串中的 也需要转义
r'\d' r'd' True 在字符串前加 r, 让整个字符串不转义
原文地址:https://www.cnblogs.com/dong-/p/9436813.html