码迷,mamicode.com
首页 > 其他好文 > 详细

常用模块- re模块

时间:2017-06-01 17:49:07      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:表达式   分享   需要   含义   []   方式   hello   桌子   长度   

一:什么是正则?

 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

生活中处处都是正则:

    比如我们描述:4条腿

      你可能会想到的是四条腿的动物或者桌子,椅子等

    继续描述:4条腿,活的

          就只剩下四条腿的动物这一类了

二:常用匹配模式(元字符)

技术分享

 

1.\w匹配字符数字下划线
    print(re.findall(‘\w‘,‘as213df_*|‘))
    
结果:
[‘a‘, ‘s‘, ‘2‘, ‘1‘, ‘3‘, ‘d‘, ‘f‘, ‘_‘]

2.\W匹配非字符数字下划线
    print(re.findall(‘\W‘,‘as213df_*|‘))
结果:
[‘*‘, ‘|‘]

3.print(re.findall(‘a\wb‘,‘a_b a3b aEb a*b‘))#匹配a b直接的匹配字符数字下划线
结果:
[‘a_b‘, ‘a3b‘, ‘aEb‘]

4.匹配任意空白字符 等价于【\t\n\r\f】
print(re.findall(‘\s‘,‘a b\nc\td‘))
结果
[‘ ‘, ‘\n‘, ‘\t‘]
5.\S匹配任意非空字符
print(re.findall(‘\S‘,‘a b\nc\td‘))
结果
[‘a‘, ‘b‘, ‘c‘, ‘d‘]
6.匹配任意数字,等价于[0-9]
print(re.findall(‘\d‘,‘a123bcdef‘))
结果
[‘1‘, ‘2‘, ‘3‘]
7.\D匹配任意非数字
print(re.findall(‘\D‘,‘a123bcdef‘))
结果
[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘]
8.匹配字符\n
print(re.findall(‘\n‘,‘a123\nbc\ndef‘))
结果
[‘\n‘, ‘\n‘]
9.匹配\t
print(re.findall(‘\t‘,‘a123\tbc\td\tef‘))
结果
[‘\t‘, ‘\t‘, ‘\t‘]
10.匹配字符 ‘h’
print(re.findall(‘^h‘,‘hello egon hao123‘))
结果
[‘h’]

print(re.findall(‘^h‘,‘hello egon hao123‘))
结果
[]
11.匹配字符串末尾
print(re.findall(‘3$‘,‘e3ll3o e3gon hao123‘))
结果
[‘3‘]
12 匹配任意字符除了换行
#匹配a和b中件除了换行的任意字符
print(re.findall(‘a.c‘,‘abc a1c a*c a|c abd aed ac‘))
结果
[‘abc‘, ‘a1c‘, ‘a*c‘, ‘a|c‘]
print(re.findall(‘a.c‘,‘abc a1c a*c a|c abd aed a\nc‘,re.S)) #让点能够匹配到换行符
结果
[‘abc‘, ‘a1c‘, ‘a*c‘, ‘a|c‘, ‘a\nc‘]

13.
#匹配a开头包含“1”,"2",“\n” 并且以c结尾的字符
print(re.findall(‘a[1,2\n]c‘,‘a2c a,c abc a1c a*c a|c abd aed a\nc‘))
结果
[‘a2c‘, ‘a,c‘, ‘a1c‘, ‘a\nc‘]
14.匹配a开头包含0-9并且c结尾的字符
print(re.findall(‘a[0-9]c‘,‘a2c a11c abc a1c a*c a|c abd aed a\nc‘))

结果[‘a2c‘, ‘a1c‘]

15.匹配开头a包含0-9 a-z A-Z * -并且以c结尾的字符
print(re.findall(‘a[0-9a-zA-Z*-]c‘,‘a1c abc a*c a-c aEc a-1c‘))
结果:[‘a1c‘, ‘abc‘, ‘a*c‘, ‘a-c‘, ‘aEc‘]

16.a开头b结尾不包含0-9数字的字符
print(re.findall(‘a[^0-9]c‘,‘a1c a2c a*c a-c aEc‘))
结果:[‘a*c‘, ‘a-c‘, ‘aEc‘]

17.匹配以a开头b最少0最大无线
print(re.findall(‘ab*‘,‘a ab b‘))
结果
print(re.findall(‘ab*‘,‘a ab baaa abbbbbbbbbbbbbbbb  ac‘))

print(re.findall(‘ab*‘,‘bbbbbb‘))
结果[]
18.“+” a开头b最少得有一个
print(re.findall(‘ab+‘,‘a‘))
结果:[]
print(re.findall(‘ab+‘,‘bbbbbb‘))
结果:[]
19.ab开头结尾包含1或者2或者3
print(re.findall(‘ab[123]‘,‘ab1 ab2 ab3 bbbbb1‘))
结果[‘ab1‘, ‘ab2‘, ‘ab3‘]

20.ab开头1、2、3结尾最少包含1个
print(re.findall(‘ab[123]+‘,‘ab11111111 ab2 ab3 abc1‘))
结果:[‘ab11111111‘, ‘ab22222222‘, ‘ab3‘]

print(re.findall(‘ab[123]+‘,‘ab1 ab2 ab3 ab4 ab123‘))
结果:[‘ab1‘, ‘ab2‘, ‘ab3‘, ‘ab123‘]

print(re.findall(‘ab[123][123][123]‘,‘ab1 ab2 ab3 ab4 ab123‘))
结果:

[‘ab123‘]

21.

print(re.findall(‘ab{3}‘,‘ab1 abbbbbbbb2 abbbbb3 ab4 ab122‘))#限制b的长度
结果:[‘abbb‘, ‘abbb‘]

print(re.findall(‘ab{0,}‘,‘a123123123 ab1 abbb123 abbbbbbb123 abbbbbtb‘))#b 0个到无穷大

结果:[‘a‘, ‘ab‘, ‘abbb‘, ‘abbbbbbb‘, ‘abbbbb‘]

print(re.findall(‘ab{2,}‘,‘a123123123 ab1 abb123 abbbb123 abbbbbt‘))
结果:[‘abb‘, ‘abbbb‘, ‘abbbbb‘]
22.
print(re.findall(‘a.*c‘,‘a2c abc aec a1c‘))#贪婪方式匹配a和c之间除了换行任何字符
结果:[‘a2c abc aec a1c‘]

23.
print(re.findall(‘a.*?c‘,‘ac abc aec a1c‘))#a到c之间任意字符
结果:[‘ac‘, ‘abc‘, ‘aec‘, ‘a1c‘]
print(re.findall(‘a.*?c‘,‘ac abc a111111111c a\nc a1c‘,re.S))#\n需要转意
结果:[‘ac‘, ‘abc‘, ‘a111111111c‘, ‘a\nc‘, ‘a1c‘]
24.()分组

#(y|ies)找到y和ies结尾的
print(re.findall(‘compan(?:y|ies)‘,‘Too many companies have gone bankrupt, and the next one is my company‘))
结果:[‘companies‘, ‘company‘print(re.findall(‘(ab)+123‘,‘ababab123‘)) #[‘ab‘],匹配到末尾的ab123中的ab
结果:[‘ab‘]
print(re.findall(‘(?:ab)+123‘,‘ababab123‘))
结果:[‘ababab123‘]
print(re.findall(r‘a\\c‘,‘a\c‘)) #r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
结果:[‘a\\c‘]

print(re.findall(‘a\\\\c‘,‘a\c‘)) #r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
print(re.findall(r‘a\\c‘,‘a\c‘)) #r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
print(re.findall(‘a\\\\c‘,‘a\c‘)) #同上面的意思一样,和上面的结果一样都是[‘a\\c‘]
 








  

常用模块- re模块

标签:表达式   分享   需要   含义   []   方式   hello   桌子   长度   

原文地址:http://www.cnblogs.com/hanjialong/p/6929852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!