[笔记]python爬虫:正则表达式库re

来源:互联网 发布:bear煮粥煲汤淘宝 编辑:程序博客网 时间:2024/05/20 23:56

1.正则表达式的语法:

正则表达式的常用操作符:

常用操作符 含义 . 表示单个字符 [] 字符集,[a-z]表示a到z之间的字符 [^] 非字符集,对单个字符给出排除范围 * 前一个字符出现0次或者无限次扩展 + 前一个字符出现1次或者无限次扩展 ? 前一个字符出现0次或者1次扩展 | 左右表达式的任意一个 {m} 扩展前一个字符m次 {m,n} 扩展前一个字符m到n次(含n次) ^ 匹配字符串的开头 $ 匹配字符串的结尾 () 分组标记,内部只能用 \d 数字,等价于[0-9] \w 单词字符,等价于[A-z a-z 0-9]

2.re库的基本使用:

re.search(pattern, string, flags=0)
作用:在字符串中搜索匹配正则表达式第一个位置

参数 含义 pattern 正则表达死字符串或者原生字符串表示 string 待匹配字符串 flags 正则表达式使用时的控制标记

范例:

match=re.search(r'[1-9]\d{4}', 'BIT 10081')if match:    print(match.group(0))

re.match(pattern, string, flags=0)
作用: #在字符串中的开始位置起匹配正则表达式
范例:

match1=re.match(r'[1-9]\d{4}', '10081 BIT')match2=re.match(r'[1-9]\d{4}', 'BIT 10081')if mathc1:    print(match1.group(0))if match2:    print(match2.group(0))

re.findall(pattern, string, flags=0)
作用:搜索字符串,以列表类型返回全部匹配字符串
范例:

ls=re.findall(r'[1-9]\d{4}', 'BIT10081 TS10084')print(ls)

re.split(pattern, string, maxsplit=0, flags=0)
作用:将一个字符串安正则表达式匹配结果分割
范例:

re.split(r'[1-9]\d{4}', 'BIT10081 TSU10084')re.split(r'[1-9]\d{4}', 'BIT10081 TSU10084', maxsplit=1)

re.finditer(pattern, string, flags=0)
作用:搜索字符串,返回一个匹配结果的迭代类型
范例:

for m in re.finditer(r'[1-9]\d{4}', 'BIT10081 TSU10084'):    if m:        print(m.group(0))

re.sub(pattern, repl, string, count=0, flags=0)
作用:在一个字符串中替换所有匹配正则表达式的子串

参数 含义 repl 替换匹配字符串的字符串 count 匹配的最大替换次数 flags 正则表达式使用时的控制标记

范例:

re.sub(r'[1-9]\d{4}', ':zipcode', 'BIT10081 TSU10084')

3.re库的一种等价用法

print('表达式1:')rst=re.search(r'[1-9]\d{4}', 'BIT10081')print('等价表达式2:')pat=re.compile(r'[1-9]\d{4}')rst=pat.search('BIT10081')

4.re库的match对象

match对象的属性:

属性 含义 .string 待匹配的文本 .re 正则表达式 .pos 正则表达式搜索文本的开始位置 .endpos 正则表达式搜索文本的结束位置

match对象的方法:

方法 含义 .group(0) 获得匹配后的字符串 .start() 匹配字符串在原始字符串的开始位置 .end() 匹配字符串在原始字符串的结束位置 .span() 返回(.start(), .end())

5.re库的贪婪匹配和最小匹配

print('re库默认贪婪匹配,输出最长匹配字符串:')match=re.search(r'py.*n', 'pyanbncndn')match.group(0)

最小匹配:

操作符 含义 *? 前一个字符出现0次或者无限次扩展 +? 前一个字符出现1次或者无限次扩展 ?? 前一个字符出现0次或者1次扩展 {m,n} 扩展前一个字符m到n次(含n次)
print('最小匹配字符串:')match=re.search(r'py.*?n', 'pyanbncndn')match.group(0)

该问参考中国大学MOOC课程 《python网络爬虫与信息提取》

原创粉丝点击