python基础(十八)—正则表达式

字符组 : [字符组]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
字符分为很多类,比如数字、字母、标点等等。
假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。
[0123456789] 在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和待匹配字符相同都视为可以匹配
[0-9]    也是表示范围和[0123456789]一样
[a-z0-9A-Z] 可以匹配数字,大小写字母用来验证十六进制

字符:

.  匹配除换行符以外的任意字符

\w  匹配字母或数字或下划线

\s  匹配任意的空白符

\d  匹配数字

\n  匹配一个换行符

\t  匹配一个制表符(tab)

\b  匹配一个单词的结尾

^  匹配字符串的开始

$  匹配字符串的结尾

\W  匹配非字母或数字或下线

\D  匹配非数字

\S  匹配非空白符

a|b  匹配字符a或字符b

()  匹配括号内的表达式,也表示一个组

[...]  匹配字符组中的字符

[^...]  匹配除了字符组中字符的所有字符


量词:
 

*  重复零此或更多次

+  重复一次或更多次

?  重复零次或一次

{n}  重复n次

{n,}重复n次或更多次

{n,m}重复n到m次

re 模块

ret = re.findall('\d', 'eva1 egon2 yuan3')  # 返回所有满足匹配条件的结果,放在列表里
print(ret)
['1', '2', '3']

ret = re.search('a', 'eva egon yuan').group()  # 匹配到的一项内容示意
print(ret)
a

ret = re.match('ab', 'abc').group()
print(ret) # 没找到则返回None
ab
ret = re.split('[\dab]', 'a* bcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)
['', '*', 'cd']

ret = re.sub('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',参数1表示只替换1个,不填默认全部替换
print(ret)
evaHegonHyuanH
ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)
('evaHegonHyuanH', 3)

obj = re.compile('\d{3}')  #将正则表达式编译一下得到一个结果,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())
ret = obj.search('abc456eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())
123
456

r返回一个存放匹配结果的迭代器
print(ret) # <callable_iterator object at 0x10195f940>
print(next(ret).group()) #查看第一个结果
print(next(ret).group()) #查看第二个结果
print([i.group() for i in ret]) #查看剩余的左右结果

<callable_iterator object at 0x000000000253A7F0>
3
4
['7', '8', '4']

 
 







 

posted @ 2018-03-05 23:59  小黑啊小黑  阅读(82)  评论(0)    收藏  举报