爬虫

正则表达式

2018-09-27  本文已影响0人  郭祺迦

为什么引入正则表达式?:正则表达式可查找一类的字符串

正则表达式:

单字符匹配:

 \d匹配所有的数字字符

 \D 匹配除数字字符以外的其他所有的字符

 \s匹配所有的空白字符;比如\t 空格等

 \S 匹配除空白字符以外的其他所有的字符

 \w 匹配数字、字母大小写、下划线和中文

 \W匹配除了\w以外的的字符

 .   除了换行符以外的所有字符

 [ ] 匹配括号中的任意一个

数量装饰

 {5} 装饰前面的一个字符出现五次

 {5,} 装饰前面的一个字符至少出现五次

 {5,8} 装饰前面的一个字符至少5次,最多八次

 {0,} 任意多次  也可以用*表示

 {1,} 至少一次  也可以用+表示

 {0,1}可有可无   也可以用?表示 

延伸:.*:任意装饰   .+:至少一次 

边界修饰

 ^    以XX开头

 $  以XX结尾

分组修饰

():

1>:视为一个整体

2>:子模式

贪婪:

.*?:取消贪婪

.+?:取消贪婪

模式修正

re.I:忽略大小写

pattern = re.compile(r'love',re.I)

string = 'LOVE is a best feel'

ret = pattern.search(string) print(ret.group())

re.S:视为单行模式

string = '''

沁园春-雪 北国风光,千里冰封,

万里雪飘 望长城内外,惟余莽莽

'''

pattern = re.compile(r'

(.*?)',re.S)

ret = pattern.search(string) print(ret.group(1))

re.M:视为多行模式

string = '''

刘德华

love 马德华

love 牛德华

'''

pattern = re.compile(r'^love',re.M)

ret = pattern.search(string) print(ret.group)

查找的三种方法:

re.match():从字符串的开头开始比配,如果匹配成功直接返回,返回一个对象

re.findall():匹配所有,返回一个列表

re.search():从字符串的任意位置开始匹配,如果匹配成功,直接返回

ret.group():整个正则匹配的内容

ret.group(1):第一个子模式匹配的内容

ret.group(2):第二个子模式匹配的内容

ret.findall():如果需要整个正则匹配的内容,需要将整个正则用小括号括起来

正则替换

.sub('替换的值',替换的字段)

上一篇 下一篇

猜你喜欢

热点阅读