正则表达式学习笔记

一、基本语法

  1. . 表示除换行符(\n)之外的任意字符,\表示转义,\.为取.[]中的.不需要转义
  2. []表示匹配其中的任意字符,用-表示范围,^表示取反[1-9a-zA-Z]
  3. \d等同于0-9,\D等同于非数字,\w为字母或数字或下划线,\s为空格
    等价关系 \d === [0-9]\D === [^0-9]\w === [0-9a-zA-Z_]
  4. ^以……开头,$以……结尾,\b表示单词边界
  5. +匹配1-∞,*匹配0-∞,?匹配0或1,{3}匹配3次,{3,5}匹配3-5,{3,}匹配3-∞
  6. 贪婪匹配at{3,}匹配至少3个t,非贪婪匹配at{3,}?只匹配三个t
  7. 前瞻后顾
    1)A(?=B)匹配出现在B之前的A;A(?!B)匹配出现在不是B之前的A
    2)(?<=A)B匹配出现在A之后的B;(?<!A)B匹配出现在不是A之后的B
    (1)正向前瞻,\$(?=\d+)$300和$abc表示匹配数字前的$,
    (2)负向前瞻,\$(?!\d+),$300和$abc表示匹配非数字前的$
    (3)正向后顾,(?<=\$)\d+,$300和$abc表示匹配$后面的数字
    (4)负向后顾,(?<!\$)\d+,$300和$abc和#100表示匹配非$后面的数字

二、re模块

参考链接:https://blog.csdn.net/zaf0516/article/details/122734231

  1. 函数名在这里插入图片描述
  2. (1)通过re模块的compile()函数编译得到的正则表达式对象(下面用regex表示)支持如下方法:
    在这里插入图片描述
  3. (2)调用正则表达式对象的regex.match()、regex.fullmatch()和regex.search()得到的结果就是一个匹配对象,匹配对象支持以下方法和属性:
    在这里插入图片描述
  4. 标识符flag
    在这里插入图片描述

常用总结

  1. re.match()re.search()re.finditer()返回匹配对象,没有则返回None,需要用group()取值
  2. re.findall(pattern,string,flags=0)返回列表
  3. re.match():从头开始匹配,如果开头匹配成功则返回对象
  4. re.search():搜索整个字符串,默认返回第一个匹配成功
    在这里插入图片描述
  5. re.finditer():以迭代器形式返回所有满足匹配的数据
  6. re.findall():以列表形式返回所有满足匹配的数据
    在这里插入图片描述

三、常见示例

1. 简单示例

2. 爬虫常见示例

  1. 利用findall匹配列表
元数据样式识别后的样式
在这里插入图片描述在这里插入图片描述
row_pattern = r'<row tradedate="(.*?)" tradetime="(.*?)" period="(.*?)" value="(.*?)" />'
row_data = re.findall(row_pattern, rows_data)
for match in row_data:
    tradedate, tradetime, period, value = match
    res = {}
    res['tradedate'] = tradedate
    res['tradetime'] = tradetime
    res['period'] = period
    res['value'] = value
    print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值