- 文本模式,包括普通字符和特殊字符(称为“元字符”)。
- 使用单个字符串描述,匹配一系列匹配某个规则的字符串
- 用于:数据验证,替换文本,提取子字符串
术语
- 通配符 ?:匹配文件名中的0个或1个字符
- 通配符 * : 匹配文件名中零个或多个字符(扩大了找到的文件的数量)
- 脚本
示例
^[0-9]+abc$
- ^ :匹配输入字符串的开始位置
- [0-9]+ :匹配多个数字,[0-9]匹配单个数字,+匹配一个或多个数字
- abc$ :匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置
- 用户注册表单:用户名只允许包含字符,数字,下划线和连接字符(-),并设置用户名长度
- ^[a-z0-9_-]{3,15}$ #3~15个字符的长度
re模块(使python语言拥有全部的正则表达式功能
- re.match(pattern,string,flags=0) 只匹配字符串的开始 pattern:匹配的正则表达式;string:要匹配的字符串;flags:标志位
- re.search(pattern,string,flags=0) 扫描整个字符串并返回第一个成功的匹配
- re.sub(pattern,repl,string,count=0,flags=0) 替换字符串中的匹配项 repl:要替换的字符串(可为函数 count:替换最大次数。默认0替换所有的匹配
- re.compile(pattern[,flags]) 用于编译正则表达式,生成正则表达对象,供match() search()使用 返回RegexObject对象
- re.finditer() 与findall【返回列表】类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
- re.split() 按照能够匹配的子串将字符串分割后返回列表 # 对于一个找不到匹配的字符串而言,split 不会对其作出分割
re.匹配模式:
- re.I 忽略大小写
- re.M 多行模式
- re.L 表示特殊字符集,依赖于当前环境
- re.S 即为. 并且包括换行符在内的任意字符(. 不包括换行符)
- re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
- re.X 忽略空格和 # 后面的注释,增加可读性
'''
re.M | re.I :
r'(.*) (.*?) .*' 都是啥呢??
'''
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"
'''
输出结果:
matchObj.group() : Cats are smarter than dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarter
'''复制代码
返回方法:
group([group1, …])
方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用group()
或group(0)
;start([group])
方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;end([group])
方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;span([group])
方法返回(start(group), end(group))
。
#3.21.19.02:13
记一下正则表达式的方法和模式,基本了解python中re模块包含的主要功能
跟着敲了部分代码,没有码进笔记,下次看不懂再Google好了
第一篇正式的笔记,有点儿杂乱。