正则表达式
一、什么是正则表达式
正则就是用一些具有特殊意义的符号组合到一起(称为正则表达式)来描述字符或字符串的方法。或者说:正则就是用来描述一类事物的规则。
二、正则表达式的作用,以及使用场景
1.作用于字符串中匹配满足规则的内容,多数用于爬虫应用程序
2.判断字符串是否满足某种规则。
三、常用匹配模式(元字符)
元字符 |
描述 |
\ | 将下一个字符标记符、或一个向后引用、或一个八进制转义符。 |
^ | 匹配字行首 |
$ | 匹配末尾 |
* |
匹配前面的子表达式任意次 |
+ | 匹配前面的子表达式一次或多次 |
{n} | n是一个非负整数,匹配确定的n次 |
{n,} | n是一个非负整数,至少匹配n次 |
{n,m} | m,n为非负整数,至少匹配n次,最多匹配m次 |
? | 匹配前面的子表达式零次或一次 |
? | |
. |
匹配除了\n和\r之外的任意单个字符 |
x|y | 匹配x或y |
[xyz] | 字符集合,匹配包含的任意字符 |
[^xyz] | 匹配除了xyz的其他任意字符 |
[a-z] | 字符范围,匹配指定范围内的任意字符 |
[^a-z] | 字符范围为除了a-z的范围 |
\b | 匹配一个单词的边界,也就是指单词和空格间的位置。 |
\B | 匹配非单词边界 |
\s | 匹配任何不可见字符#[ \f\n\r\t\v] |
\S | 匹配任何可见字符 |
\w | 匹配包括下划线的任何单词字符 |
\W | 匹配任何非单词字符 |
\d | 匹配一个数字字符 |
\D | 匹配一个非数字字符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
() | 将()之间的表达式定义为组,并将其保存到临时区域,最多九个,可以用\1到\9来引用 |
(?:pattern) | 非匹配获取,匹配pattern但是不获取匹配结果,不进行存储 |
| | 将两个匹配条件进行or逻辑运算。 |
四、贪婪模式
默认情况下+和*尽可能多的匹配内容
import re
print(re.findall('bo.*bo','bo13212bo1231231231231231312bo'))
#['bo13212bo1231231231231231312bo']
五、非贪婪模式
import re
print(re.findall('bo.*?bo','bo13212bo1231231231231231312bo'))
# ['bo13212bo']
六、re模块其他函数
1.search
仅获取第一个匹配的内容
2.match
从字符串开头匹配(只匹配开头,没匹配上就直接返回None)
3.compile
得到一个表达式对象,后期可以重复使用
4.split
re.split("[:\/\\]","a:b/c\d/f")
5.sub
普通替换与字符串的替换没有区别
正则替换 只替换后面的python
print(re.sub("(python)(.*)(python)",r"\1\2PYTHON","python asasasaasa python"))