今天总结一下正则表达式,它用来解决模糊匹配的问题,几乎在所有编程语言中都可以用,尤其在python爬虫中,它是一门必修知识;
所谓模糊匹配,就是在匹配字符串中,有一部分是确定的,另一部分是不确定的值但有范围的任意值;
这样我们就可以用一些具有特殊含义的符号,对字符串进行另一种描述,而这些特殊含义的符号就组成一个正则表达式。
正则表达式与re模块
正则表达式也内嵌在Python中,通过re模块来实现,常用方法是findall(),会将匹配到的字符串用一个列表返回
例如: 要匹配一大串字符串中的所有数字,不用for循环和If语句,用re模块一行就能实现
import re
print(re.findall('\d+',"sadfjk11ksk22iuir33bndb44uidu55sgsfir66o77"))
运行结果:

字符匹配
普通字符匹配
import re
print(re.findall('bigbig',"Iwannaabigbigjuicecanyougiveme?"))
#findall第一个参数是需要匹配的子串或子串规则,第二个参数为母串
运行结果:

利用元字符进行模糊匹配
元字符: . ^ $ + ? {} [] | () \
- .任意字符:
import re
#匹配b开头g结尾的子串,..表示任意的两个字符,如果不是两个,那就匹配不出来
print(re.findall('b..g',"abcdefgabcdghijklmn"))
运行结果:

- ^只能为开头:
import re
#匹配b开头g结尾的子串
#^表示子串的第一个字符只能在母串的开头,..表示任意的两个字符
print(re.findall('^b..g',"bbcgefgabcdghijblmg"))
运行结果:

- $只能以结尾:
import re
#匹配b开头g结尾的子串
#$表示子串的最后一个字符只能在母串的结尾,..表示任意的两个字符
print(re.findall('b..g$',"abcdefgabcdghijblmg"))
运行结果:

重复的字符匹配
-
贪婪匹配: 即尽量多地匹配,与之相反的是惰性匹配
-
*是0到无穷个:
import re
#*表示子串的某个字符可以0到无穷次出现
print(re.findall('Wo23*Le',"sjfkufiWo233333333333333333333Le"))
运行结果:

- +是1到无穷个:
import re
#+表示子串的某个字符可以1到无穷次出现(该元素至少出现一次),..表示任意的两个字符
print(re.findall('Wo23+Le',"sjfkufiWo233333333333333333333Le"))
#与*的区别匹配
print(re.findall('Wo23*',"dsjfkjfiWo2")) #能匹配到内容
print(re.findall('Wo23+',"dsjfkjfiWo2"))

本文深入解析正则表达式的使用方法,涵盖Python re模块的基础与高级应用,包括字符匹配、元字符、重复匹配及分组技巧。通过实例演示如何进行模糊搜索、字符串分割与替换。
最低0.47元/天 解锁文章
9340

被折叠的 条评论
为什么被折叠?



