爬虫学习笔记(三)——Re正则表达式

xiaoxiao2021-02-28  180

匹配规则:

.  任何单个字符

[]  单个字符的取值范围 [^ ]  不取括号内的字符 *  前一个字符的0至任意次 +  前一个字符的1次至任意次 ? 前一字符的0或1次 |  左右表达式任意一个,相当于或运算 {m}  前一个字符M次  ab{2}c=abbc {m,n}  前一字符m至n次 ^  字符串开头 $  字符串结尾 ()  分组标记,内部只能用|,(abc)=abc,(abc|aaa)=abc或aaa \d  数字,=[0-9], \d{m}=m个数字 \w  单字符,=[A-Za-z0-9] import re 原始字符串屏蔽反斜杠转义效果 r'\b'='\\b'  匹配一个单词边界, '\b'  退格 Re主要函数: match = re.search(pattern, string, flags=0)  匹配整个字符串,返回第一个符合的位置 pattern:正则表达式 string:待匹配字符串 flags:控制标记 .match(pattern, string, flags=0) 从字符串开头开始匹配正则,开头若不匹配则返回错误 .findall(pattern, string, flags=0)  返回所有匹配到的列表 .split(pattern, string, maxsplit=0, flags=0)  将匹配到的作为分隔符分割字符串 maxsplit最大分割数 .finditer(pattern, string, flags=0)  放回一个匹配结果的迭代类型 .sub(pattern, repl, string, count=0, flags=0) repl:  替换匹配后的字符串 count:  匹配的最大替换数量 a = re.search(r'pattern','string')  一次性匹配 b = re.compile(r'pattern')  面向对象方法:提前编译匹配内容后使用 a = b.search('string')  用b替代re,已经包含编译的规则,当使用量大时可以减小开支,加快运行速度 编译后可以使用re的全部函数 re匹配后返回match对象 match对象属性: .string  待匹配文本 .re  正则 .pos  文本匹配开始的位置 .endpos  文本匹配的结束位置 match对象的方法: .group(0)  获得匹配后的字符串 .start()  匹配到的字符串在原字符串中的开始位置 .end()  匹配到的字符串在原字符串中的结束位置 .span()  返回(.start(), .end()) 贪婪匹配: re默认采用这种匹配方式,即返回在复合匹配要求的最长字符串 r'a.*b'  'abcdbefbghdij'  将返回abcdbefb 在匹配规则中使用?改为最小匹配,r'a.*?b'返回ab, r'a.+?b'返回'abcdb'
转载请注明原文地址: https://www.6miu.com/read-18693.html

最新回复(0)