re模块

import re      # re模块,结果存成列表

print(re.findall('\w','ab 12\+- *&_'))        #\w匹配字母数字及下划线
                                 \w
print(re.findall('\W','ab 12\+- *&_'))        #\W匹配非字母数字下划线
print(re.findall('\s','ab \r1\n2\t\+- *&_'))  #\s匹配任意空白字符,包括[\t\n\r\f]
print(re.findall('\S','ab \r1\n2\t\+- *&_'))  #\S匹配任意非空字符
print(re.findall('\d','ab \r1\n2\t\+- *&_'))  #\d匹配任意数字,等价于[0-9]
                   \d
print(re.findall('\D','ab \r1\n2\t\+- *&_'))  #\D匹配任意非数字

print(re.findall('\w_sb','egon alex_sb123123wxx_sb,lxx_sb'))#结果:['x_sb','x_sb','x_sb']
                                                      \w_sb


print(re.findall('\Aalex','abcalex is salexb')) #\Aalex即查看字符串最开始的四个字符是不是alex.结果为:[]
print(re.findall('\Aalex','alex is salexb'))    # 结果为:['alex']
print(re.findall('^alex','alex is salexb'))     # 匹配字符串开头
print(re.findall('sb\Z','alexsb is sbalexbsb')) #匹配字符串末尾处,如果存在换行,只匹配到换行前的结束字符串
print(re.findall('sb\z','alexsb is sbalexbsb')) #匹配字符串末尾处
print(re.findall('sb$','alexsb is sbalexbsb'))  #匹配字符串末尾处
                                          sb

print(re.findall('^ebn$','ebn1'))               #结果:[]
                          ebn


print(re.findall('a\nc','a\nc a\tc a1c'))
print(re.findall('a\\\\c','a\c anc abb cbv a\nc'))
print(re.findall(r'a\\c','a\c anc abb cbv a\nc'))


重复匹配:
 .   ?   *   +  {m,n}  .*  .*?          # * ? + 这三个必须与其他字符连用


1、.:代表除了换行符外的任意一个字符
print(re.findall('a.c','abc a1c aAc aaaaaca\nc'))
                                          a.c
print(re.findall('a.c','abc a1c aAc aaaaaca\nc',re.DOTALL))     # 点可以是所有的类型


2、?:代表左边第一个字符重复0个或1个   # 取出来是 a或 ab
print(re.findall('ab?','a ab abb abbb abbbb abbbb'))
                                     ab?


3、*:代表左边第一个字符出现0个或任意个
print(re.findall('ab*','a ab abb abbb abbbb abbbb a1bbbbbbb'))   #a必须有,b则必须紧接着a出现零个或任意多个
                                                  ab*


4、+ :代表左边第一个字符出现1个或任意个    # 最少为ab
print(re.findall('ab+','a ab abb abbb abbbb abbbb a1bbbbbbb'))
                                                   ab+


5、{m,n}:代表左边第一个字符出现m个到n个     # 可以取代上面三种形式
print(re.findall('ab?','a ab abb abbb abbbb abbbb'))
print(re.findall('ab{0,1}','a ab abb abbb abbbb abbbb'))


print(re.findall('ab*','a ab abb abbb abbbb abbbb a1bbbbbbb'))
print(re.findall('ab{0,}','a ab abb abbb abbbb abbbb a1bbbbbbb'))


print(re.findall('ab+','a ab abb abbb abbbb abbbb a1bbbbbbb'))
print(re.findall('ab{1,}','a ab abb abbb abbbb abbbb a1bbbbbbb'))


print(re.findall('ab{1,3}','a ab abb abbb abbbb abbbb a1bbbbbbb'))


6、.*:匹配任意长度,任意的字符=====》贪婪匹配
print(re.findall('a.*c', 'ac a123c aaaac a *123)()c asdfasfdsadf'))  # 结果:['ac a123c aaaac a *123)()c']  #一个字符串
                       a.*c


7、.*?:非贪婪匹配
print(re.findall('a.*?c', 'a123c456c'))                             # 结果:['a123c']


print(re.findall('a.*?c', 'ac a123c aaaac a *123)()c asdfasfdsadf'))# 结果:['ac', 'a123c', 'aaaac', 'a *123)()c']


():分组
print(re.findall('(alex)_sb','alex_sb asdfsafdafdaalex_sb'))
                           (alex)_sb          #会按alex_sb匹配,但最后打印出的为括号内的alex




print(re.findall(
    'href="(.*?)"',
    '<li><a id="blog_nav_sitehome" class="menu" href="http://www.cnblogs.com/">博客园</a></li>'))
<li><a id="blog_nav_sitehome" class="menu" href="http://www.cnblogs.com/">博客园</a></li>
                                          href=".*?"


[]:匹配一个指定范围内的字符(这一个字符来自于括号内定义的)
print(re.findall('a[0-9][0-9]c','a1c a+c a2c a9c a11c a-c acc aAc'))


当 - 需要被当中普通符号(减号)匹配时,只能放到[]的最左边或最右边.或者加转译符\将其变为普通字符的意义(否则就是左对齐的意思)
print(re.findall('a[+*-]c','a1c a+c a2c a9c a*c a11c a-c acc aAc'))
print(re.findall('a[a-zA-Z]c','a1c a+c a2c a9c a*c a11c a-c acc aAc'))  #a、c之间加一个字符(a-Z)


[]内的^代表取反(非)的意思
print(re.findall('a[^a-zA-Z]c','a c a1c a+c a2c a9c a*c a11c a-c acc aAc'))
print(re.findall('a[^0-9]c','a c a1c a+c a2c a9c a*c a11c a-c acc aAc'))


print(re.findall('([a-z]+)_sb','egon alex_sb123123wxxxxxxxxxxxxx_sb,lxx_sb')) #>>['alex', 'wxxxxxxxxxxxxx', 'lxx']
                                               [a-z]+_sb


| :或者
print(re.findall('compan(ies|y)','Too many companies have gone bankrupt, and the next one is my company'))


(?:)  :代表取匹配成功的所有内容,而不仅仅只是括号内的内容
print(re.findall('compan(?:ies|y)','Too many companies have gone bankrupt, and the next one is my company'))
print(re.findall('alex|sb','alex sb sadfsadfasdfegon alex sb egon'))




re模块的其他方法:
print(re.findall('alex|sb','123123 alex sb sadfsadfasdfegon alex sb egon'))
print(re.search('alex|sb','123213 alex sb sadfsadfasdfegon alex sb egon').group())
只要找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
print(re.search('^alex','123213 alex sb sadfsadfasdfegon alex sb egon'))
^alex表示看字符串最开头的四个是否是alex
print(re.search('^alex','alex sb sadfsadfasdfegon alex sb egon').group())
search+^等同于match:
print(re.match('alex','alex sb sadfsadfasdfegon alex sb egon').group())
print(re.match('alex','123213 alex sb sadfsadfasdfegon alex sb egon'))


info='a:b:c:d'
print(info.split(':'))
print(re.split(':',info))


info=r'get :a.txt\3333/rwx'
print(re.split('[ :\\\\/]',info))


print('egon is beutifull egon'.replace('egon','EGON',1))     # 1表示替换一个


print(re.sub('(.*?)(egon)(.*?)(egon)(.*?)',r'\1\2\3EGON\5','123 egon is beutifull egon 123'))
                        r'\1\2\3EGON\5'即去掉括号1括号2,3和括号5的内容,将括号4内的替换为EGON
             (123 )(egon)( is beutifull )(egon)( 123)


print(re.sub('(lqz)(.*?)(SB)',r'\3\2\1',r'lqz is SB'))
print(re.sub('([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)',r'\5\2\3\4\1',r'lqzzzz123+ is SB'))

(lqzzzz)(123+ )(is)( )(SB)

pattern=re.compile('alex')    #将re表达式存储起来,方便以后重复使用
print(pattern.findall('alex is alex alex'))
print(pattern.findall('alexasdfsadfsadfasdfasdfasfd is alex alex'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值