Python爬虫学习日志(7)

正则表达式

  • 正则表达式
    • 1.概念
          • 正则表达式的作用
          • 正则表达式的使用
          • 正则表达式的语法:由字符和操作符构成
          • 正则表达式的常用操作符
          • 正则表达式语法实例
          • 经典正则表达式实例
    • 2.Re库的基本使用
          • 正则表达式的表示类型
          • Re库主要功能函数
          • Re库的等价用法
          • Re库主要功能函数的示例
          • Re库的Match对象
          • Re库的贪婪匹配和最小匹配

正则表达式

  • RE:regular expression 或 regex

1.概念

正则表达式的作用
  • 通用的字符串表达框架
  • 简洁 表达一组字符串的表达式
  • 针对字符串表达 简洁特征 思想的工具
  • 判断某字符串的特征归属
  • 表达文本类型的特征(病毒、入侵等)
正则表达式的使用
  • 编译:将符合正则表达式语法的字符串转换成正则表达式特征
    Python爬虫学习日志(7)_第1张图片
正则表达式的语法:由字符和操作符构成

Python爬虫学习日志(7)_第2张图片

正则表达式的常用操作符

Python爬虫学习日志(7)_第3张图片
Python爬虫学习日志(7)_第4张图片

正则表达式语法实例

Python爬虫学习日志(7)_第5张图片

经典正则表达式实例

Python爬虫学习日志(7)_第6张图片

2.Re库的基本使用

正则表达式的表示类型
  • raw string 类型(原生字符串类型)
    原生字符串类型在字符串类型前加小写的 ‘ r ’。(转义符 ‘\’)
    Python爬虫学习日志(7)_第7张图片
  • string 类型,更繁琐
    Python爬虫学习日志(7)_第8张图片
    当正则表达式包含转义符时,使用raw string
Re库主要功能函数

Python爬虫学习日志(7)_第9张图片

Python爬虫学习日志(7)_第10张图片
Python爬虫学习日志(7)_第11张图片
Python爬虫学习日志(7)_第12张图片
Python爬虫学习日志(7)_第13张图片

Re库的等价用法
  • 编译后的优势:一次编译,可以多次操作。
  • 编译后的对象可以调用上述六个主要功能函数。
    Python爬虫学习日志(7)_第14张图片
    Python爬虫学习日志(7)_第15张图片
Re库主要功能函数的示例
import re
#search
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
    print("search: ",match.group(0))
#match
match = re.match(r'[1-9]\d{5}', '100081 BIT')
if match:
    print("match: ",match.group(0))
#findall
ls = re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print("findall: ",ls)
#split
ls2 = re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit= 1)
print("split: ",ls2)
#finditer
for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
    if m:
        print("finditer: ",m.group(0))
#sub
ls3 = re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
print("sub: ",ls3)

输出结果:

search:  100081
match:  100081
findall:  ['100081', '100084']
split:  ['BIT', ' TSU100084']
finditer:  100081
finditer:  100084
sub:  BIT:zipcode TSU:zipcode
Re库的Match对象
  • Match对象的属性
    Python爬虫学习日志(7)_第16张图片

  • Match对象的方法

Python爬虫学习日志(7)_第17张图片

  • Match对象示例
import re
#search
m = re.search(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(type(m))

print(m.string)
print(m.re)
print(m.pos, m.endpos)
print(m.group(0))
print(m.start(), m.end(), m.span())

输出结果:

<class 're.Match'>
BIT100081 TSU100084
re.compile('[1-9]\\d{5}')
0 19
100081
3 9 (3, 9)
Re库的贪婪匹配和最小匹配
  • 贪婪匹配
    Python爬虫学习日志(7)_第18张图片
    Python爬虫学习日志(7)_第19张图片
  • 最小匹配(后面添加 “?”)
    Python爬虫学习日志(7)_第20张图片
    Python爬虫学习日志(7)_第21张图片

你可能感兴趣的:(Python爬虫基础教程)