Python笔记(四)

2016/02/20 Python 阅读次数:

正则表达式

正则表达式

match()函数 从头开始匹配,若是某个字符不满足匹配,将匹配失败 返回None,
如果匹配成功,将匹配结果放入匹配结果对象中

单个字符匹配父符:
. 点匹配一个除\n以外的,任意字符包括数字字符
就是点的对应的位置可以是任何字符,只要不是\n就行
[] 中括号匹配集合中任何一个字符;-匹配字符的范围,
[0-9] [a-z] [A-Z]
中括号的是单个范围[0-9a-zA-Z],意思是这个中括号的位置可以是数据和大小写字母
[^] 是黑名单,对方括号的其中字符禁止匹配 --只是在方括号中表示禁止匹配
这个符号,只有在中括号里面才是禁止匹配后面的数据,在括号外面意思不一样。

\d 表示匹配一个数字
\D 表示匹配一个非数字字符串,等价于[^0-9]
大小写d,都是表示数字,意思对应的位置只能是数字或非数字

\s space表示空白字符 等价于[\n\t\r\f\v ]
\S 表示匹配一个非字符串 等价于[^\n\t\r\f\v ]
大小写s 都是表示空白字符 ,意思式对应的位置只能是空白字符或非空白字符
\w 匹配一个单词字符 [a-zA-Z0-9_] 单词word
\W 匹配一个非单词字符 [^a-zA-Z0\-9_]
大小写w,都是表示单词字符,意思就是大小写字符和数字
扩展\w
在python3中re模块,默认使用unicode模式
多个字符匹配:
{n} 代表前面的字符可以匹配n次
例如:”\d{3}“,意思就是最少3次,如果是2次,就会返回None
可以写成{0},这样返回一个空值
{n,m} n代表至少匹配n次,m代表多匹配m次
{n,} 表示至少出现n次,没有上线
例如“\d{1,5}”,意思就是最少出现一次,最多5次,在这个范围内,就能匹配出来,否则返会None;{1,5}={0,5}={5},这三者相等,所以在写的时候,可以写成最后一个
+ 代表至少匹配一次 {1,}
* 代表至少匹配0次 {0,}
print(re.match(r"[A-Z][a-z]*","Hellopython"))这个意思就是第一个字母大写,第二个字母小写,后面的全是小写字母的意思,要是在第三位出现数字或者大写字母,都不会返回。
? 代表匹配0次或者1次 {0,1}
print(re.match(r"[0-9]?[0-9]","456")) 这个只能匹配出45,6是匹配不出来的==print(re.match(r"[0-9]?\d","456")) 效果一样
print(re.match(r"[1-9]?\d","09"))这个只能匹配出0,匹配不出9,原因是,第一个【1-9】不满足,后面的\d取了第一位,结果为0

匹配位置
^ 匹配开始位置
match自带匹配开始的属性 但是为了正则的语义完整 建议加上^
这个字符就是以什么开始^[0-9],这个意思就是以数字开始,必须放在括号外面
$ 匹配结束位置
匹配结束位置 ,而不是数据
例如:123$,意思就是以123结尾的,1234就会返回一个None
分组:
目的 -- 将感兴趣的数据从整体中提取出来,放到分组中
等整体匹配成功返回的结果对象中 , .group(分组编号)获取对应的分组数据
group(0) == group() 表达式整体结果
用户的分组编号从1开始
() 表示匹配数据并放入分组
# num = "0775-8956417"
# ret = re.match(r"(\d{3,4})-(\d{7,8})",num)

| 表示匹配|左边或者右边的正表达式,or的关系

引用分组的方式:
通过分组编号进行引用
有名分组:
通过别名进行引用

高级函数:
search() 从头开始查找 如果某个字符不能满足匹配规则,继续往后匹配,
print(re.search(r"\d+","暴击66666")),这个\d+意思就是匹配数字,若是匹配到数字,间隔了一个非数字,就会中断返回前面的数字 print(re.search(r"\d+","暴击666a66")) 这个就是返回666

findanll(正则,数据)
查找数据中的所有,符合正则规则的数据,通过列表返回
ret = re.findall(r"\d+","python = 9999,c = 7890,c++ = 12345") # 这不能是\w,这样会出现先将数字和字母同时放进列表当中。
print(ret)

sub(正则,替换的数据,目标数据)
替换所有数据,返回值是被替换之后的数据结果 字符串

参数2还可以是个函数名字:
必须要有一个参数 --- 通过这个参数将正则的匹配对象传递过来
必须要有一个返回值 - - -通过返回替换的数据 用return

方括号中点,就是

Search

    Table of Contents