Python正则表达式

正则表达式基础

普通字符包含大小写字母、所有数字、所有标点符号及一些其他符号

普通字符含义
\W匹配非数字、字母、下划线、汉字
\W匹配数字、字母、下划线、汉字
\S匹配任意非空白字符
\s匹配空白字符
\D匹配非数字
\d匹配数字

元字符在正则表达式中具有特殊含义的专用字符

元字符含义
.匹配任意字符(除换行符\r、\n)
^匹配字符串的开始位置
$匹配字符串的结束位置
*匹配前一个字符的任意次数(包括0次)
?匹配该字符的前一个字符0次或1次
\转义字符,其后的一个元字符失去特殊含义,匹配元字符本身 ;在字符串前加r也可以r’str’
()()中的表达式称为一个组,组匹配到的字符都能被取出
[]匹配范围内任意字符
|将匹配条件进行逻辑或运算

用正则表达式提取数据

1.findall()

findall()函数能提取满足正则表达式的所有字符串

import re
str11='123qwer'
print(re.findall('(\w+)q(\w+)',str11))

爬虫中使用

import requests
import re
url='https://www.cnblogs.com'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'}  
response=requests.get(url=url,headers=headers).text
ex = '<a class="post-item-title".*?target="_blank">(.*?)</a>'
print(re.findall(ex,response,re.S))

2.search 函数()

search只会匹配第一个满足正则表达式的,匹配后用group函数取值

import re
str1='123Qwe!_@#你我他'
ret=re.search('\w',str1)
print(ret.group())

3.match函数()

match函数与Search类似,但是是从开头匹配,如果开头不满足,后面满足的也不会被匹配到

4.finditer函数()

finditer与findall功能差不多,区别是findall返回的是一个列表,finditer返回的是一个迭代器,需要利用循环来取值

import re 
str1='123Qwe!_@#你我他'
ret=re.finditer('\w', str1)
for i in ret:
    print(i.group(),end='')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值