"这篇初学者python笔记主要介绍了re模块和正则表达式,强调了正则表达式在模糊匹配中的作用,特别是在Python爬虫中的重要性。文章通过实例展示了如何使用Python的re模块进行字符串匹配,包括普通字符匹配、元字符的使用,如`.`, `^`, `$`, `*`等,以及贪婪和惰性匹配的概念。"
正则表达式是编程中的一个强大工具,用于处理字符串的模糊匹配问题。在Python中,正则表达式的功能是通过内置的re模块提供的。这个模块提供了多种方法,比如`findall()`,可以方便地找到字符串中符合特定模式的所有子串,并以列表形式返回。
在Python中使用正则表达式,首先需要导入re模块。例如,要查找字符串中所有的数字,可以使用`\d+`作为匹配规则,`\d`代表数字,`+`表示一个或多个,结合`findall()`方法,代码如下:
```python
import re
print(re.findall('\d+', "sadfjk11ksk22iuir33bndb44uidu55sgsfir66o77"))
```
正则表达式中包含了一些特殊字符,称为元字符,它们赋予了字符特殊的含义。比如`.`代表任意字符,`^`表示字符串的开始,`$`表示字符串的结束,`[]`用于定义字符集,`()`用于分组,`*`表示前面的字符可以重复0次或多次。
- `.任意字符`:在匹配时,`.`可以匹配除换行符外的任何单个字符。例如,`b..g`可以匹配以`b`开头,以`g`结尾,中间有任意两个字符的子串。
- `^只能为开头`:`^`置于字符集内表示非该字符,置于表达式开始表示匹配字符串的开始位置。
- `$只能以结尾`:`$`表示匹配字符串的结束位置。
此外,正则表达式还有重复量词,如`*`、`+`、`?`、`{n}`、`{n,}`和`{n,m}`,它们控制前一个字符或字符集的重复次数。
- `*贪婪匹配`:`*`表示前面的字符可以重复0次到无限次,贪婪匹配会尽可能多的匹配字符。例如,`Wo23*Le`会匹配`Wo233333333333333333333333333333333333333333333333333333333Le`。
- `?惰性匹配`:与贪婪匹配相反,`?`使匹配尽可能少,`23*?`在遇到下一个字符不匹配时就会停止。
通过掌握这些基本概念和操作,初学者可以开始在Python项目中使用正则表达式进行文本处理和数据提取,尤其是在网络爬虫中,正则表达式经常用于从HTML或XML文档中提取特定信息。随着经验的积累,还可以学习更复杂的正则表达式构造,如否定前瞻、后瞻等,进一步提高文本处理的灵活性和效率。