python正则表达式re

mac2022-06-30  6

说明:本文是按照唐松的爬虫书进行学习的,博客写转发还要写原链接,还要导出书的参考文献格式,故写了原创,罪过。 

import re m=re.match('www','www.baidu.com') print('匹配结果:',m) print('匹配的起点和终点:',m.span()) print('匹配的起始位置:',m.start()) print('匹配的终点位置:',m.end())

 

line='fat cats are smarter than dogs, is it right?' m=re.match(r'(.*) are (.*?) ',line) print('匹配的整句话:',m.group(0)) print('匹配的第一个结果:',m.group(1)) print('匹配的第二个结果:',m.group(2)) print('匹配的结果列表:',m.group())

 

 (.*)匹配了fat cat,而(.*?)只匹配了smarter,因为正则表达式匹配中默认的贪婪模式以及非贪婪模式,(.*)会匹配尽可能多的字符,(.*?)尽可能少地匹配字符 r'(.*) are (.*?) '中的'r'的意思是raw string,代表纯粹的字符串,不会对反斜杠'\'进行特殊处理

import re string=r'2\7' m=re.match('(\d+)\\\\',string) print(m.group(1))#结果为2 n=re.match(r'(\d+)\\',string) print(n.group(1))#结果为2

 

正则表达式字符串需要经过2次转义。分别是“字符串转义”和“正则转义” 例子中,需要匹配r'2\7'里的字符'\',那么正则表达式就需要4个反斜杠'\\\\',前2个和后2个各自转义成一个反斜杠'\',4个'\\\\'转义成'\\',最终在正则表达式中转义成'\' 如果使用r'...'方法的话,就不用进行字符串转义了,直接进入第二步“正则转义”

re.match只能从字符串的第一个位置进行匹配,而re.search扫描整个字符串并返回第一个成功的匹配。

import re m1=re.match('com','www.sina.com') m2=re.search('com','www.sina.com') print(m1) print(m2)

findall可以找到所有的匹配:

import re m1=re.match('[0-9]+','12345 is the first number,23456 is the second') m2=re.search('[0-9]+','The first number is 12345,23456 is the second') m3=re.findall('[0-9]+','12345 is the first number,23456 is the second') print(m1) print(m2) print(m3)

 

-------------------------2020.1.5晚补充

匹配电子邮箱

 

最新回复(0)