正则表达式
正则表达式是对字符串操作的一种逻辑公式,亦是一个以简单直观方式通过寻找模式匹配的文本工具。
备选字符集[],量词{},分组()数据抽取及多规则模糊匹配。
re.match仅仅搜索从字符串开始的第一个匹配,当你向从任意位置匹配时,容易误用,最好总是使用re.search,re.search只会返回第一个匹配。
原始字符串r代表"raw",原始字符串不会将\字符解释成一个转义符。
re.findall返回列表,re.finditer返回生成器,两者并非返回match对象,而是依据正则表达式的内容以字符串或元组的形式返回匹配自身。
^指定字符串的开始,$指定字符串的结束。
? <=> {0,1},+ <=> {1,},* <=> {0,},{M,N}边界包含。
match对象提供group、groups、groupdict方法,从维护角度看,命名分组十分有价值。若混合命名分组与非命名分组,非命名分组不会出现在由groupdict返回的字典中。
回溯引用:\N,最多匹配前99个分组。
match = re.search(r"(?P<first_name>[\d]{3})-(?P<last_name>[\d]{4})","867-5309"),
则:match.groupdict["first_name"]= '867'
re.sub允许从被替换的字符串中的正则表达式模式使用同样的回溯引用。
compile:返回一个已编译的正则表达式对象,该对象之后可以复用,大多数情况下并无很大的性能优势。
re.IGNORECASE:不区分大小写。
re.DOTALL:点匹配换行符。
re.MULTILINE:多行模式。
re.VERBOSE:详细模式,易于阅读。
re.DEBUG:调试模式。
\s匹配空白字符,\d匹配数字字符,\b匹配长度为0的子串,\w匹配任意单词字符。