正则表达式
正则表达式
re全称:Regular Expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语法规则.
我们抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则再合适不过了.
- 正则优点:速度块,效率高,准确性高
- 正则缺点:新手上手难度高
不过只要掌握了正则编写的逻辑关系,写出一个提取页面内容的正则其实并不复杂
元字符:具有固定含义的特殊符号
常用元字符:
. 匹配除换行符以外的任意字符, 除了\n 匹配不到 |
量词:控制前面的元字符出现次数
* 重复零次或更多次 |
贪婪匹配和惰性匹配
.* 贪婪匹配 |
爬虫用的最多的就是惰性匹配
案例
str: 玩吃鸡游戏,晚上一起上游戏,干嘛呢?打游戏啊 |
re模块
findall 查找所有,返回list
lst = re.findall('m', "mai le fo len, mai ni mei!")
print(lst) # ['m', 'm', 'm']
lst = re.findall(r'\d+', '5点之前,你要给我500万')
print(lst) # ['5', '500']search 会进行匹配,但如果匹配到了第一个结果。就会返回这个结果,如果匹配不上search返回的则是 None
ret = re.search(r'\d', '5点之前,你要给我500万')
print(ret) # 5match 只能从字符串的开头进行匹配
ret = re.match('a', 'abc').group()
print(ret) # afinditer 和 findall 差不多,只不过这时返回的是迭代器(重点)
it = re.finditer('m', "mai le fo len, mai ni mei!")
for el in it:
print(el.group()) # 依然需要分组compile 可以将一个长长的正则进行预加载. 方便以后使用
obj = re.compile(r'\{3}') # 将正则表达式编译成为一个正则对象,规定要匹配的3个数字
ret = obj.search('abc123eee') # 正则表达式对象调用search,参数为待匹配字符串
print(ret.group()) # 123正则中的内容如何单独提取?
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 泰 极!