python爬虫之正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫之正则表达式相关的知识,希望对你有一定的参考价值。

一、简介

  正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

  compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

二、使用方法

  1、简单看一下写法

  函数语法:

  re.match(pattern, string, flags=0)

  

函数参数说明:
参数	描述
pattern	匹配的正则表达式
string	要匹配的字符串。
flags	标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
  匹配成功re.match方法返回一个匹配的对象,否则返回None。   我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法 描述 group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

  

import re

p = re.compile(‘abcd‘)
print(type(p))
#<class ‘_sre.SRE_Pattern‘>
print(dir(p))
#[‘__class__‘, ‘__copy__‘, ‘__deepcopy__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__le__‘, ‘__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘findall‘, ‘finditer‘, ‘flags‘, ‘fullmatch‘, ‘groupindex‘, ‘groups‘, ‘match‘, ‘pattern‘, ‘scanner‘, ‘search‘, ‘split‘, ‘sub‘, ‘subn‘]
m = p.match(‘abcdef‘)
print(type(m))
#<class ‘_sre.SRE_Match‘>
print(dir(m))
#[‘__class__‘, ‘__copy__‘, ‘__deepcopy__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__le__‘, ‘__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘end‘, ‘endpos‘, ‘expand‘, ‘group‘, ‘groupdict‘, ‘groups‘, ‘lastgroup‘, ‘lastindex‘, ‘pos‘, ‘re‘, ‘regs‘, ‘span‘, ‘start‘, ‘string‘]
print(m.group())
#abcd
print(m.group(0))
#abcd

  

  re.match()方法值匹配字符串的开头如果不满足,就返回一个None

import re

p = re.compile(‘abcd‘)
m = p.match(‘abdcef‘)
print(m.group())
#AttributeError: ‘NoneType‘ object has no attribute ‘group‘

  

  神奇的.

import re

p = re.compile(‘.‘)
m = p.match(‘abdcef‘)
print(m.group())
#a

  

  特殊字符(元字符)

  注意:\\在里面是转义词的意思,例如,你想匹配一个re.compile(‘.‘),这个.是匹配任意字符。但是我就想让它匹配一个.怎么办,re.compile(‘\\.‘),这样的话它就真的只匹配一个点。

技术分享

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



以上是关于python爬虫之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

python3爬虫之入门和正则表达式

Python爬虫入门之正则表达式

Python爬虫入门七之正则表达式

python爬虫之解析库正则表达式

Python爬虫之正则表达式

Python爬虫之正则表达式