爬虫_Day 1 正则表达式

本文介绍了爬虫学习过程中的第一步——正则表达式。正则表达式主要用于从大量信息中筛选所需内容。文章通过表格展示了通用字符、原子表、元字符等概念,并举例说明了贪婪匹配和懒惰匹配的区别,同时提到了模式修正,帮助读者理解正则表达式的复杂性。

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

当我开始对爬虫下手的时候心情是这样的

信心满满打开了教程,,看到第一节“正则表达式”

md 不会正则表达式学么爬虫!!!

盘他!

正则表达式是干啥用的,简单的讲就是需要在众多的信息中过滤出来自己需要的信息

 

我整了张表,请看

 

表一:通用字符

import re
# 导包

string = "I like python 2020_3_21"
# 定义演示字符串
expression = "\d"
# 正则表达式
print("\d演示:")
print(re.search(expression, string)
# search 函数从任意地方开始匹配
# 匹配不到就是NUll
----------------------------------------------
\d演示:
<re.Match object; span=(14, 15), match='2'>
-----------------------------------------------

表二:原子表[ ]

# 这个比如手机号
string = "17642587523"
expression = "[1][1-9][^123]"
# 即 第一位是1,第二位是1-9之间 第三位可以看到有个上三角,意味就是非,即不在1-3中
print(re.search(expression, string))
----------------------------------------
<re.Match object; span=(0, 3), match='176'>

表三:元字符

这一部分比较难理解来看一个例子

 # 1.取出python
string = "I like python 2020_3_21"

expression = "^I.*(p.*)\s.*1$"
# ^不在原子表中,代表从头开始,^I 也就是说从I开始,.任意一个字符,不包含\r\n\t
# * 可以出现0次,1次,多次, .*就是任意个字符  ()需要匹配的放在里面 后面的就好理解l了吧
a = re.match(expression, string)
print(a.group(1))
--------------------------------------
python
--------------------------------------

插入两个概念:贪婪匹配跟懒惰匹配

string = "pythony"
expression = "^p.*y"
print(re.search(expression, string))
-------------------------------------
<re.Match object; span=(0, 7), match='pythony'>
-------------------------------------
# 这个就是贪婪匹配,,,怎么匹配到最后 的y 看下面两个概念
"""
贪婪匹配:尽可能多的去匹配
懒惰匹配:少的匹配
"""
string = "pythony"
expression = "^p.*?y"
print(re.search(expression, string))

# 不难发现我们在.* 后面加了一个? 这个就是懒惰匹配

------------------------------------------
<re.Match object; span=(0, 2), match='py'>
------------------------------------------

表四:模式修正

string = "Python"
expression = "py"
print(re.search(expression, string, re.I))
------------------------------------------
<re.Match object; span=(0, 2), match='Py'>

是不是有点,蒙圈!!!

还有几个函数需要了解一下啊

re.match()
# 该方法只能从开头开始查,如果查找的内容不是开头或者不存在时,返回值为None

re.search()
# 该方法与上述方法类似,不过该方法查找的范围是全部内容,但返回只返回查找到的第一个,验证方法同上。

re.sub()
# 该方法默认全文替换,可以指定替换次数,如果查找的内容不存在时,将返回原字符串。

re.Fullmatch()
# 该方法与match类似,只不过,该方法搜索的匹配内容必须和搜索的原文一样,否则都认为是未找到。

re.Findall()
# 该方法不需要通过group方法进行验证,找不到时返回一个空列表。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值