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

正则表达式

时间:2016-12-23 22:38:25      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:控制字符   mpi   class   end   匹配   group   print   排除   本地化   

import re
‘‘‘
 函数:
 findall()
 search()
 match()
 re.compile()
 re.split()

 p = re.compile(r‘\d+‘)
 p.split(‘one1two2three3four4‘)


 sub()
 re.sub("g.t","have",‘i get a, i got b , i gut c‘)  全部替换
 re.sub("g.t","have",‘i get a, i got b , i gut c‘2)  替换2次
 re.subn("g.t","have",‘i get a, i got b , i gut c‘2)  返回总共替换次数




 group() 返回被RE匹配的字符串  括号里可写参数位置group(0) group(1)
 start() 返回匹配开始的位置
 end() 返回匹配结束的位置
 span() 返回一个元组包含匹配(开始,结束)的位置
‘‘‘



‘‘‘ 普通字符会通过和自身去进去匹配 如‘alxe’就会匹配到‘alxe’ ‘‘‘
w = re.findall(‘alex‘,‘adfljkdkcdjaalexer‘)
print(w)

‘‘‘ 元字符   . 通配符    ^    $    *    +    ?    {}     []     |    ( )     \     ‘‘‘

‘‘‘ . 一个点抵消一个字符  ‘‘‘
w = re.findall(‘alex.r‘,‘adfljkjjjalexerjjjjjjg‘)
print(w)

‘‘‘ ^  尖角符,匹配元素必须在开头才能匹配  ‘‘‘
w = re.findall(‘^alex‘,‘alexadfljkjjjerjjjjjjg‘)
print(w)

‘‘‘ $符,匹配元素必须在末尾才能匹配  ‘‘‘
w = re.findall(‘alex$‘,‘adfljkjjjerjalex‘)
print(w)

‘‘‘ *,控制前面单个字符,可出现0到N次。如: ale   alex   alexxxx  ‘‘‘
w = re.findall(‘alex*‘,‘adfljkjjjerjffffalexxxxxxdf‘)
print(w)

‘‘‘ +符 控制前面单个字符,可出现1到N次。如:  alex   alexxxx  ‘‘‘
w = re.findall(‘alex+‘,‘adfljkjjjerjffffalexxxxxxdf‘)
print(w)

‘‘‘ ?符 控制前面单个字符,可出现0到1次。如:  ale   alex  ‘‘‘
w = re.findall(‘alex?‘,‘adfljkjjjerjffffalexxxxxxdf‘)
print(w)

‘‘‘ ?符 控制前面单个字符,可选择控制字符出现次数, 如5次  alexxxxxx  也可以控制范围取值 如{3,4} )‘‘‘
w = re.findall(‘alex{5}‘,‘adfljkjjjerjffffalexxxxxxdf‘)
print(w)
w = re.findall(‘alex{3,4}‘,‘adfljkjjjerjffffalexxxxxxdf‘)
print(w)

‘‘‘ []符  可取括号内的任意一个值。如果里面有元字符,就会当作普通字符去匹配。如a[.]ex  结果为 a.ex ‘‘‘
w = re.findall(‘a[bt]ex‘,‘adfljkjjjerjffffabexxxxxxdf‘)
print(w)
w = re.findall(‘a[.]ex‘,‘adfljkjjjerjffffa.exxxxxxdf‘)
print(w)
‘‘‘这样取 [a-z] 26字母,也可以是数字 [1-9] ! 加尖角符 [^1-9] 就是排除里面范围,取其它‘‘‘
w = re.findall(‘[a-z]‘,‘adfljkjjjerjffffa.exxxxxxdf‘)
print(w)

‘‘‘ \ 反斜杠后面跟元字符去除特异功能,  \反斜杠后面跟普通字符实现特殊功能
\d 匹配任何十进制数,它相当于类 [0-9]
\D 匹配任何非十进制数,它相当于类 [0-9]
\s 匹配任何空白字符;他相当于类 [\t\n\r\f\v]
\S 匹配任何非空白字符;他相当于类 [\t\n\r\f\v]
\w 匹配任何字母数字字符;他相当于类[a-z A-Z 0-9]
\W 匹配任何非字母数字字符;他相当于类[a-z A-Z 0-9]
\b 匹配一个单词边界,也就是指单词和空格的位置
 小写 和  大写 匹配相反。
‘‘‘
w = re.findall(‘\d‘,‘adfljkj34jjerjfff2falexxxxxxdf‘)
print(w)

‘‘‘ 将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到
一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。 ‘‘‘
w = re.search(‘(ab)*‘,‘abadfljkjjjeabarjffffalexxxxxxdfab‘).group()
print(w)

‘‘‘ 从前面的描述可以看到 ‘*‘, ‘+‘ ‘?‘ 都是贪婪的,但这也许并不是  ‘‘‘
w = re.findall(‘a(\d+)‘,‘a235555er4b‘)
print(w)

‘‘‘ 从前面的描述可以看到 ‘*‘, ‘+‘ ‘?‘ 都是贪婪的,但这也许并不是  ‘‘‘
w = re.search(‘a(\d+?)‘,‘a235555er4b‘).group()
print(w)
w = re.search(‘a(\d*?)‘,‘a235555er4b‘).group()
print(w)

w = re.search(‘a(\d+?)‘,‘a235555er4b‘).group()
print(w)


‘‘‘  不能执行
w = re.search(r‘(alex)(eric)com\2‘,‘ alexa23555alex5ericer4b‘).group()
print(w)
‘‘‘

‘‘‘
re.I  使匹配对大小写不感冒
re.L  做本地化识别(locale-aware)匹配
re.M  多行匹配,影响^ 和 $
re.S  是.匹配包括换行在内的左右字符
re.findall(".","abc\nde")
re.findall(".","abc\nde",re.S)
re.U 根据Unicode字符集解析字符,这个标志影响
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更好

‘‘‘
w = re.findall(".","abc\nde")
print(w)

w = re.findall(".","abc\nde",re.S)
print(w)

w = re.search("com","com",re.I).group()
print(w)

p = re.compile(r‘\d+‘)
w = p.findall(‘one1two2three3four4‘)

  

正则表达式

标签:控制字符   mpi   class   end   匹配   group   print   排除   本地化   

原文地址:http://www.cnblogs.com/cloniu/p/6216056.html

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