python正则表达式小结(笔记)

0x01、元字符

1
2
3
4
5
6
7
8
9
10
|
^
$
.
\
*
+
?
[]
{}

.(点) 匹配除换行符外的所有字符

\. 反斜杠+点,匹配点

\反斜杠能剥夺元字符特殊能力,反斜杠还能赋予普通字符特殊能力,比如/d能匹配所有数字

[]创建字符类,python对大小写很敏感

{}匹配的次数

[0-255] 表示匹配0-2和5

1
re.search(r"(\d{1,3}\.){3}(\d{1,3})",'192.168.1.135') //匹配ip地址

| 逻辑或

$ 匹配字符串结束位置

^ 脱字符,匹配输入字符串的开始位置,若放在字符集开头则表示匹配除字符集之外的其他字符,若放到字符集后面则表示匹配其本身

* 匹配前面的子表达式0次或多次,相当于{0,}
? 匹配前面的子表达式0次或1次相当于{0,1}
+ 匹配前面的子表达式1次或多次相当于{1,}

贪婪匹配:
在符合条件的情况下尽可能多的匹配,python默认情况下就是贪婪匹配
要想取消贪婪匹配的话,就在后面加个?

0x02、特殊字符

\A 匹配字符串开始位置,相当于^
\Z 匹配字符串最后位置,相当于$
\b 匹配一个单词边界(单词边界有:符号,!.()等,_,数字不属于单词边界),只有在字符类中才表示退格

匹配到的两个Python分别是.前面的和()里面的
\B 匹配非单词边界,与\b相反
\d 匹配[0-9]和其他数字字符,如果开启了re.ASCII标志,就只匹配[0-9]
\D 匹配任何非Unicode的数字,与\d相反,如果开启了re.ASCII标志,就只匹配[^0-9]
\s 匹配空白字符(包括:[/t /n /r /f /v]以及其他空白字符),如果开启了re.ASCII标志,就只匹配[/t /n /r /f /v]
\S 匹配任何非Unicode中的空白字符,与\s相反,如果开启了re.ASCII标志,就只匹配[^ /t /n /r /f /v]
\w 匹配单词字符,包括中文字符,大小写字母,数字和下划线[a-zA-Z0-9_],如果开启了re.ASCII标志,就只匹配[a-zA-Z0-9_]

\W 匹配任何非Unicode的单词字符,与\w相反,如果开启了re.ASCII标志,就只匹配[^a-zA-Z0-9_]

0x03、编辑正则表达式

compile() 函数将一个字符串编译为字节代码。

0x04、编译标志

编译标志让你可以修改正则表达式的工作方式。在re模块下,编译标志均有两个名字∶完整名和简写。

python支持的编译标志

re.MULTILINE标志使^也匹配换行符之后的位置,使$也匹配换行符之前的位置

re.findall()函数,当表达式中有()时只返回()里匹配到的内容

1
p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'

以上表达式只匹配.jpg的路径

文章目录
  1. 1. 0x01、元字符
  2. 2. 0x02、特殊字符
  3. 3. 0x03、编辑正则表达式
  4. 4. 0x04、编译标志
|