爬虫入门,re篇

                                      正则表达式的学习总结
  1. 正则表达式就是。
    以一小段字符串表征许多字符串的共同特点,从而把有这个特点的字符串提取出来。以一小段字符串表征许多字符串的共同特点,从而把有这个特点的字符串提取出来。

  2. 库中的符号元素介绍
    .表示一个任意的字符.表示一个任意的字符
    [ ]表示字符集,对单个字符给出取值范围,eg:[ling][l-m]
    [^ ]非字符集,对单个字符给出排除范围eg:[^jian]
    *他所标记在那个字符后,那个字符会有0次或者无限次的扩展eg:hang*
    +上同,但是表示1次到无限次的扩展eg:hang+
    上同,但是表示0到1次的扩展eg:hang?
    |左右表达式的任意一个eg:ling|fang
    {N }扩展前一个字符N次eg:{N}
    { N,M}扩展前一个字符N-M次eg:{N,M}
    ^匹配字符串开头eg:^ping
    $匹配字符串结尾eg:ping$
    ()进行分组的标记,内部只能用|操作eg:(ling|fang)
    \d数字,介于eg:[0-9]
    \w单词字符,等价于[A-Za-z0-9_]

  3. 使用正则表达式

import re  #就引入了正则表达式的库

正则表达式的类型 raw string 类型来表达正则表达式:
比如想要表示linghanghang纳闷写成r’linghanghang’,否则在Python中要写成字符串类型,需要加斜杠,而斜杠又涉及到转义字符,所以要加两个斜杠。这样就会很麻烦,所以通常情况下用正则表达式来表达。

  1. 正则表达式的函数。
   re.search(pattern,string,flags)

这个函数的作用是,匹配正则表达式的第一个位置,返回一个match类型

pattern是正则表达式的字符串
string待匹配的字符串
flags正则表达查找的标记有三个。re.In能忽略正则表达式的大小写。re.M对操作符^操作。可以让正则表达式在每一行的开始进行匹配。re.S对点.操作符作用的,能够匹配所有的字符,除了换行符。

re.match(pattern,string,flags),从一个字符串的开始位置匹配正则表达式,返回一个match对象。注意是从开头匹配!!!!否则就是空的。

re.findall(pattern,string,flags),列表类型返回全部能匹配的字符串。

re.split(pattern,string,maxsplit,flags),将一个字符串按正则表达式匹配出的结果进行分割。并且返回列表类型。
增加的maxsplit是最大分割数目。剩余没分的,按一大坨字符串直接输出。
注意!按正则表达式匹配出的是不要的,丢掉的。

re.finditer(pattern,string,flags),返回一个匹配结果的迭代类型,返回的类型也是match。常常for厮混:

impo re

for m in re.finder(r'[1-9]\d{5}','BIT10081 TSU100084'):
    if m :
    
        print(m.group(0))`

re.sub(pattern,repl,string,count,flags),按正则表达式匹配到那个位置的字符串,然后用repl给的字符串去代替。count表示最大的替换次数。

  1. Re库的match对象

match对象的属性
.string待匹配的文本,也就是把要被检索的内容全按字符串形式打印出来
.re匹配时使用的正则表达式
.pos按正则表达式搜索文本的开始位置
.endpos按正则表达式搜索文本的结束位置

match对象的方法
.group(0)获得匹配后的字符串,其实还有1.2.3之类的,0表示第一次匹配的结果,1就是第二次匹配结果。
.start()匹配的字符串在原始字符串开始的位置
.end()匹配的字符串在原始字符串结尾的位置
.span()返回(.start(),.end())

6.贪婪匹配

就是搜索的内容中有多个能够匹配的结果,但返回的是最长字符串的那个。所以称为贪婪匹配。
匹配最短的就是加符号,如下

*?

+?

??

{M,N}?

这就是最小匹配的操作符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值