爬虫入门_正则表达式

正则表达式总结

1. 原子

1. 普通字符作为原子:import re  str = 'leadingme'  path = 'me'  res = re.search(path,str)

2. 非打印字符作为原子:\n换行符, \t制表符等

3. 通用字符作为原子:\w 字母,数字,下划线 、\W 除字母,数字,下划线字符、\d 十进制数、\D 除十进制数数字、
\s 空白字符、\S 除空白字符的字符

4. 原子表:[]表示从[]中选择出一个原子(优先选第1个) [xyz]从x y z中选出一个, [^xyz] 除了x y z

举例: 	string='abc1234567jkl'  pat = '\w\d\d\d'  res = re.search(pat,string)  print(res)  ->  c123

2. 元字符

.		匹配除换行符外任意一个字符
^ 		匹配开始位置
$ 		匹配结束位置
* 		匹配前面元素0\1\多次
? 		匹配前面元素0\1次
+ 		匹配前面元素1\多次
{n} 	匹配前面元素恰好n次
{n,} 	匹配前面元素至少n次
{n,m} 	匹配前面元素至少n次至多m次 
a|b  	模式选择符(选择两个其中一个)
()      匹配单元符(只匹配出括号中的内容)
[0-9]   一个任意数字

3、模式修正符

I:     匹配时忽略大小写 *
M: 	多行匹配	 *
L:     本地化识别匹配
U:	    unicode解析
S:     配包括换行符 *
举例:string - 'Python'  pat = 'pyt'  res = re.search(pat,string,re.I)

4、 贪婪模式与懒惰模式

  • 定义: 贪婪模式的核心就是尽可能多的匹配,而懒惰模式的核心就是尽可能少的匹配

举例:
string = ‘poythonyhgjdo’
pat1 = ‘p.’ – poythony 贪婪模式
pat2 = 'p.
?’ – poy 懒惰模式,精准

5、 正则表达式函数

  1. 正则表达式函数有re.match(pat,string)函数,re.search(pat,string,re.模式)函数,全局匹配函数,
    re.sub()函数 替换 ret = c.sub(‘被替换内容’,‘替换为内容’, 替换总内容)

  2. match函数,与search函数唯一的区别它是从头开始匹配

  3. 全局匹配函数,格式: re.compile(pat).findall(string), 能匹配多个满足正则表达式的结果

6、常见正则实例

  1. 实例: 匹配 .com和.cn网址

string = “百度首页”
pat = ‘[a-zA-Z]+://[^\s]*[.cn|.com]’
res = re.compile(pat).findall(string)
print(res) ==> [‘htpp://www.baidu.com’]

  1. 实例: 匹配电话号码

string = ‘dafsdgs021-5342624634gsdkhflkadfsda0773-42379021bmdaljgs’
pat = “\d{4}-\d{7}|\d{3}-\d{8}”
res = re.compile(pat).findall(string)
print(res) ==> [‘021-53426246’, ‘0773-4237902’]

你可能感兴趣的:(python爬虫,正则表达式,python)