re正则表达式使用

import re
# =============================================================================
# 二,字符匹配
# =============================================================================
"""普通字符"""#大多数字符和字母都和自身相匹配
re.findall('ks','dfkjaslfjaskdjksjfisjfks')
#Out[292]: ['ks', 'ks']  
#寻找出所有查找的字符

"""元字符"""# .   ^   $   *   +   ?   { }   [ ]   |   ( )  \

#. 匹配除了换行符以外的任意一个字符
re.findall('.','dkfjl')
#Out[293]: ['d', 'k', 'f', 'j', 'l']

#^ 只有后面跟的字符在开头,才能匹配上
re.findall('^hk','fkdhkjdjf')
#Out[294]: []
re.findall('^ji','jianlddjfn')
#Out[295]: ['ji']

#$ 只有前面的字符在结尾才能匹配上
re.findall('hf$','kojhf')
#Out[297]: ['hf']

#* 它前面那个字符出现0——n次都可以匹配上
re.findall('hl*','dfhijfdfhllksfdjksfhl')
#Out[298]: ['h', 'hll', 'hl']

#+ 它前面那个字符出现1——n次都可以匹配上
re.findall('dfh+','dfhhhsjflsjfdfhfh')
#Out[300]: ['dfhhh', 'dfh']

#? 匹配前面那个字符出现0或1次
re.findall("alexsel?","aaaalexse")
#Out[301]: ['alexse']

#{} 将它前面的字符匹配出现指定次数
re.findall('gh{2}','ghhhkdhfghkdjfg')
#Out[302]: ['ghh']
re.findall('dhf{2,5}','dhfffsdfhdhfffff')
#Out[303]: ['dhfff', 'dhfffff']  将f匹配2——5次

#\ 后面跟元字符去除元字符特殊功能,跟普通字符产生特殊功能
re.search('\.','hfdkjf.')
re.findall('\^','fhdsk^^')#去除^的特殊功能,当成普通字符进行匹配
text='sfkh\\\\dfjd'
re.findall(r'\\',text)#r可以直接表示\\为字符\\,不需要间接转义
re.findall('\\\\',text)#\\通过\将\的特殊含义去除,单纯表示字符\


#\d 匹配十进制数字,相当于[0-9]
re.findall('\d4','hfd45fdsf34')
#Out[316]: ['34']

#\D 匹配任何非十进制数字,相当于[^0-9]
re.findall('[^3-5]','62743648323647')#匹配非3-5的数字
re.findall('\D','jdfldsjf8379dflkj3yk')
re.findall('(\D)*','dffkjdf76fds')

#\s 匹配任何空白字符,相当于[ \t\n\r\f\v]
re.findall('[2-5]\s','3 454 435325')
re.findall('\D\s','  dfs sf cv fg5 ')
#Out[336]: ['  ', 's ', 'f ', 'v ']

#\S 匹配任何非空白字符,相当于[^ \t\n\r\f\v]
re.findall('\S{3}','dfhskdjf jldkf')
#Out[337]: ['dfh', 'skd', 'jld']

#\w 匹配任何数字字母字符,相当于[0-9a-zA-Z]
re.findall('s\w*','dfjsfljdsfsdf')
#Out[339]: ['sfljdsfsdf']

#\W 匹配任何非数字字母字符,相当于[^0-9a-zA-Z]
re.findall('.\W','含fsjf djf村 jdkl')

#\b 表示匹配一个单词的边界,即单词和空格之间的位置
re.findall('\\bcost\\b','cost fjdk cost df')#需要再增添一个\将\b正常操作
re.findall(r'\bcost\b','cost fjdk cost df')#通过加r使\b可以独立发挥作用
re.findall(r'sin\b','sindsin dsfs')
re.findall(r'kit\b','kit*dfsf')#单词边界不一定是空格,可以是特殊字符

#() 将括号内的内容当作一个整体去处理
re.findall('(23)(45)','2323233223234523')#寻找23或45
re.findall('(\d+)','yhrf3yij54i5784thi48')

# 通过添加?实现非贪婪匹配,将+和*只能匹配一次
re.findall('\d+?','34325345')
re.findall('[0-9][a-z]+?','3h43kjh43u5h4j5h4u')
#Out[394]: ['3h', '3k', '3u', '5h', '4j', '5h', '4u']
re.findall('[0-9][a-z]+','3h43kjh43u5h4j5h4u')
#Out[394]: ['3h', '3kjh', '3u', '5h', '4j', '5h', '4u']

# =============================================================================
# 三,常用函数
# =============================================================================
#re.match函数只在字符串开头匹配一下,如果没有便失败
re.match('jw','isdfheiwuhewiru389rjw;e,r/43to oujfp3;,r 32ir239yr31hir 3rpi30tu p3tro40t').group()
re.match('is','isdfheiwuhewiru389rjw;e,r/43to oujfp3;,r 32ir239yr31hir 3rpi30tu p3tro40t').group()

#re.search函数可以在整个字符串上进行匹配
re.search('(\d)','isdfheiwuhewiru389rjw;e,r/43to kiiioujfp3;,r 32ir239yr31hir 3rpi30tu p3tro40t').group()
re.search(r'\d','isdfheiwuhewiru389rjw;e,r/43to kiiioujfp3;,r 32ir239yr31hir 3rpi30tu p3tro40t').groups()

#re.compile() 将匹配这个过程定义下来
recs=re.compile('c\d')#具有匹配字符‘c数字’的功能

text1='c43ksjdcsjfsljc45sjflsjfsc2sfdd'
text2='dfjsldfjudsic833fy8c832'
recs.findall(text1)
recs.findall(text2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江姐vior

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值