正则表达式的基本用法

#正则表达式用于匹配一类具有相同规则的字符串,对于网页结构多变的有奇效
#规则:
#   单字符:
#   . :除换行以外所有字符
#   [] :匹配集合中任意一个字母
#   \   :转义
#   \d :数字 [0-9]
#   \D :非数字
#   \w :数字、字母、下划线、中文
#   \W :非\w
#   \s :所有的空白字符
#   \S :非空白
#   数量修饰:
#   *  :任意多次,可以为0次
#   +   :至少一次
#   ?   :0次或1次
#   {m} :固定m次
#   {m,}    :至少m次
#   {m,m}   :m-n次
#   边界:
#   \b \B
#   $   :以某某结尾
#   ^   :以某某开头
#   分组:
#   ()  :视为一个整体;组模式 \1  \2
# 例:
import re
string = '<p><div><span>猪八戒</span></div></p>'
pattern = re.compile(r'<(\w+)><(\w+)>\w+</\2></\1>')
ret = pattern.search(string)
#print(ret)
#以上是使<div>与</div>相互匹配
#   贪婪模式:
#    .*? .+?,加个问号,就会取消贪婪模式,使匹配的字数变少
# re.I :忽略大小写
# re.M :多行匹配
# re.S :单行匹配,可以匹配换行符
#例:
#string = '''hate is a beautiful feeling
#love you very much
#love she
#love her'''
#string2 = '''<div>沁园春-雪
#北国风光
#千里冰封
#万里雪飘
#望长城内外
#惟余莽莽
#</div></div>'''
#pattern = re.compile(r'^love',re.M)
#pattern = re.compile(r'<(\w+)>(.*?)</\1>',re.S)
#ret = pattern.findall(string2)
#print(ret)
#\w+无法匹配换行符
#有换行符时要re.S来设置单行模式,就可以匹配换行符
#match只从开始位置找,search从任意位置找,findall查找所有字符
#re.sub(正则表达式,替换内容,字符串),用于正则替换,例如:
#string = 'i love you, you love me, ye'
#pattern = re.compile(r'love')
#ret = re.sub(r'love','hate',string)
#ret = pattern.sub('hate',string)
#print(ret)
#我们也可以在替换内容那里用函数来实现
def fn(a):
    ret = int(a.group())
    #group()表示的是正则匹配的结果
    return str(ret - 5)
string = '我喜欢身高为175的女孩'
pattern = re.compile(r'\d+')
ret = pattern.sub(fn, string)
print(ret)

(1)正则表达式一个更行之有效的办法是直接把那部分网页给截出来,然后把自己要的部分变成(.*?),去掉其他的一些东东,变成.*?,然后就可以提取了
(2)注意有换行符时要用单行模式:re.S

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值