赞
踩
正则的目的
数据挖掘
从一大堆文本中找到一小堆文本时。如,从文本是寻找email, ip, telephone等
验证
使用正则确认获得的数据是否是期望值。如,email、用户名是否合法等
非必要时慎用正则,如果有更简单的方法匹配,可以不使用正则
正则表达式的优缺点
优点:提高工作效率、节省代码
缺点:复杂,难于理解
从字符串头查找匹配项
接受一个正则表达式和字符串,从主串第一个字符开始匹配,并返回发现的第一个匹配。
如果字符串开始不符合正则表达式,则匹配失败,re.match返回None
r’sanle’ 中的r代表的是raw(原始字符串)
原始字符串与正常字符串的区别是原始字符串不会将\字符解释成一个转义字符
正则表达式使用原始字符很常见且有用
查找并返回匹配的字符串,返回一个列表
假如里面有分组,只会打印分组的内容,(?:xxx)取消分组
查找并返回匹配的字符串,返回一个迭代器
re.sub(‘匹配正则’,‘替换内容’,‘string’)
将string中匹配的内容替换为新内容
reg = re.compile(r'l+')
result = reg.search(Zen)
print(result, type(result))
• 复杂的正则可复用。
• 使用编译正则更方便,省略了参数。
• re模块缓存它即席编译的正则表达式,因此在大多数情况下,使用compile并没有很大的性能优势
最简单的正则表达式是那些仅包含简单的字母数字字符的表达式,复杂的正则可以实现强大的匹配
匹配a+非小写字母
• 贪婪模式(.*): 匹配尽可能多的字符-默认模式
• 非贪婪模式(.*?): 正则 \d*?
• 匹配出 <div>test1</div>, <div>test2</div>
当使用分组时,除了可以获得整个匹配,还能够获得选择每一个单独组,使用 () 进行分组
简单分组
当使用分组时,除了可以获得整个匹配,还能够获得选择每一个单独组,使用 () 进行分组
分组不匹配(?:规则): 表示将()仅用于组合字符串,不识别为分组
使用()分用,用\0, \1, \2引用 (\0表示匹配的整个串)
正则表达式的断言分为:先行断言(lookahead)和后行断言(lookbehind)
正则表达式的先行断言和后行断言一共有4种形式:
n (?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion)
n (?!pattern) 零宽负向先行断言(zero-width negative lookahead assertion)
n (?<=pattern) 零宽正向后行断言(zero-width positive lookbehind assertion)
n (?<!pattern) 零宽负向后行断言(zero-width negative lookbehind assertion)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。