今天在写爬虫的时候无意中想到了一个初学者的正则表达式,看了一篇非常不错的文章。搜索并找到它。re模块re.search通常使用match=re.search(pat,str)的形式。因为可能不匹配,所以一般在re.search()之后使用if语句。re.matchre.match与re.search非常相似,只是re.match从字符串的开头开始匹配。常用的正则字符是指a、X、9等字符匹配自己,元字符不匹配自己,因为它们有特殊含义,比如。^$*+?{}[]\|().英文句点,匹配任意字符,不包含'\n'\w匹配'word'字符,[a-zA-Z0-9]\W匹配非'word'字符\b匹配'word'和'non'之间的边界-word'\s匹配单个空白字符、空格、换行符、回车、制表符、形式[\n\r\t\f]\S匹配非空白字符\t、\n、\r匹配制表符、换行符、回车\d匹配数字[0-9]^匹配字符串的开头$匹配字符串的结尾重复'+'一次或多次,'*'零次或多次,'?'零个或一个方括号[][]类似于or方括号可以用来表示一组字符,所以[abc]匹配'a'或'b'或'c'。GroupExtractions()有时需要提取部分的匹配字符,比如刚才的邮箱,我们可能需要里面的用户名和主机名,这时候可以用()把用户名和主机名分开包装,比如r'([\w.-]+)@([\w.-]+)',如果匹配成功,则pattern不会改变,但是可以使用match.group(1)和match.group(2)对username和hostname,结果为match.group()保持不变。如果包含一个或多个组,则findall和groups()结合findall()返回元组列表。re.search加上^后也是一样的。re.subre.sub(pat,replacement,str)在str中找到字符串匹配模式,并用replacement替换。替换可以包含\1或者\2来替换对应的组,进而实现部分替换。
