在python中随心所欲的使用正则表达式

本文介绍Python中正则表达式的使用方法及爬虫应用实例,涵盖search、findall、sub等函数,并通过具体案例展示如何从网页抓取所需数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初级爬虫学习资源

  1. 爬虫学习——警察叔叔不抓我
  2. 一文速通的正则表达式
  3. python中使用正则表达式——为所欲为
  4. 爬取“百思不得姐“网站——小试牛刀

re库

  • python中的re库是正则表达式在python的实现
  • 下面介绍几个常用的方法

search(pattern, string, flags=0)

  • 扫描整个string并返回匹配pattern的结果(None或对象)
  • 有匹配的字符串的话返回一个对象(包含符合匹配条件的第一个字符串),否则返回None
import re
#导入正则库

content = 'Hello 1234567 Hello 666'
#要匹配的文本
res = 'Hello\s'
#正则字符串

result = re.search(res, content)
if result is not None:
    print(result.group())
    #输出匹配得到的字符串 'hello'(返回的得是第一个'hello')
       
print(result.span())
#输出输出匹配的范围(匹配到的字符串在原字符串中的位置的范围)

res1 = 'Hello\s(\d)(\d+)'
result = re.search(res1, content)
print(result.group(1))
#group(1)表示匹配到的第一个组(即正则字符串中的第一个括号)的内容
print(result.group(2))

findall(pattern, string, flags=0)

  • 扫描整个context并返回匹配res的结果(None或列表)
  • 有匹配的字符串的话返回一个列表(符合匹配条件的每个子字符串作为它的一个元素),否则返回None
import re

res = 'Hello\s'
results = re.findall(res, content)
if results is not None:
   print(results)
   #输出: ['hello','hello']

res1 = 'Hello\s(\d)(\d+)'
results = re.findall(res1, content)
if result is not None:
    print(results) 
    # 当正则字符串中出现括号时,所得到列表的每个元素是元组
    # 每个元组的元素都是依次匹配到的括号内的表达式的结果
    #输出: [('1','1234567'),('6','666')]

sub(pattern, repl, string, count=0, flags=0)

  • 可以来修改文本
  • 用将用pattern匹配string所得的字符串替换成repl
import re

content = '54aK54yr5oiR54ix5L2g'
res = '\d+'
content = re.sub(res, '', content)
print(content)

compile(pattern, flags=0)

  • 将正则表达式res编译成一个正则对象并返回,以便复用
import re

content1 = '2019-12-15 12:00'
content2 = '2019-12-17 12:55'
content3 = '2019-12-22 13:21'
pattern = re.compile('\d{2}:\d{2}')
result1 = re.sub(pattern, '', content1)
result2 = re.sub(pattern, '', content2)
result3 = re.sub(pattern, '', content3)
print(result1, result2, result3)

flags的一些常用值

  • re.I 使匹配对大小写不敏感
  • re.S 使.匹配包括换行符在内的所有字符
import re
re.compile(res, re.I)
#如果res可以匹配大写字母,那它也可以匹配相应的小写字母,反之也可

re.compile(res,re.S)
#使res中的'.'字符可以匹配包括换行符在内的所有字符
Python使用正则表达式非常方便,因为Python内置了一个名为`re`模块来支持这个功能。以下是关于如何在Python中运用正则表达式的简要介绍: ### 导入 re 模块 首先需要导入 `re` 库,这是操作所有与正则相关的函数的基础步骤。 ```python import re ``` ### 编译正则表达式 虽然可以直接将字符串作为参数传递给`re`库里的各个方法,但更推荐的方式是先创建一个Pattern对象(即编译后的正则表达式),然后再进行匹配或其他处理。这样做有助于提升效率,尤其是在多次使用相同的模式时。 ```python pattern = re.compile(r'\d+') # 匹配数字序列 ``` ### 进行搜索和替换 #### search() 和 match() - `match()` 函数只检查是否从头开始匹配成功; - 而 `search()` 则会在整个字符串里寻找第一个符合条件的位置。 两者返回的结果都是Match对象,如果没有找到匹配项,则返回None。 ```python result = pattern.search('example123string') if result: print("Found:", result.group()) else: print("No match") ``` #### sub() 替换文本内容 如果你想把某些部分替换成别的东西,可以用sub()来做。它接受三个参数:一个是旧的模式、二是新的值以及三是目标字符串。 ```python new_text = re.sub(r'\s+', ' ', text) # 将连续空白符改为单空格 print(new_text) ``` 此外还有其他一些常用的函数如 findall(), split() 等等可以根据实际需求选择合适的方法去解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳衣白卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值