正则表达式11个元字符 及 方法讲解


import re
s = 'hello world'
a = s.find('h')
print(a)
p = s.replace('l', 'xx')
print(p)
b = s.split('w')
print(b)

##############################
#元字符 1:‘ . ’通配符 代指所有的字符,除了换行符 一个通配符只能代指一个字符
a = re.findall('w..l', 'hello world')
print(a)# ['worl']
print(re.findall('w.l', 'hello w\nld')) #[]
#re.findall(pattern,string,flag)flag可以更改‘.’所代指的规则,即‘\n’也可以代指,但一般不乱改
##############################
#元字符 2:‘^’尖角符 只在string头部 开始匹配
print(re.findall('^h...o', 'habcodefg')) #['habco']
#元字符 3:‘$’ 只在string尾部 开始匹配
print(re.findall('h..l$', 'abcddhivl')) #['hivl']
#元字符 4:‘*’ 重复匹配[0,无穷]次
print(re.findall('ba*', 'cfffbaaaaaa'))#['baaaaaa']
print(re.findall('ba*', 'cfffb'))#['b']

#元字符 5:‘+’ 重复匹配[1,无穷]次
print(re.findall('ba+', 'hhhha')) #[]
print(re.findall('ba+', 'hhhhbaaaaa')) #['baaaaa']
#元字符6:‘?’ 重复匹配[0,1]次
print(re.findall('a?b', 'bbbbbbbk'))#['b', 'b', 'b', 'b', 'b', 'b', 'b']
print(re.findall('a?b', 'abbbbbbbk'))#['ab', 'b', 'b', 'b', 'b', 'b', 'b']
print(re.findall('a?b', 'aaababaaabb'))#['ab', 'ab', 'ab', 'b'] #不会出现[aaab]等多个a 的情况
#元字符7:‘{n}’大括号。重复匹配人n次 或{n,m}n到m次
print(re.findall('a{3}b', 'aaaaaaab'))#['aaab']
print(re.findall('a{3}b', 'ab'))#[]
print(re.findall('a{1,3}b', 'aab'))#['aab']
print(re.findall('a{1,3}b', 'aaaaaaaaab'))#['aaab'] 这是贪婪匹配 匹配最多的次数
##结论1:*={0,正无穷}
##结论2:+={1,正无穷}
##结论3:?={0,1}
#元字符8:'[]'字符集 取消元字符的特殊功能(\ ^ - )例外
print(re.findall('a[b,c]d', 'acd'))#['acd']二选一 [com,cn]用来筛选网址
print(re.findall('[a-z]', 'ad115fdfsfsz')) #['a', 'd', 'f', 'd', 'f', 's', 'f', 's', 'z'] '-'的功能还在 去a到z之间的值
print(re.findall('[w.*]', 'wsd.*')) #['w', '.', '*'] * . 的功能都取消了
print(re.findall('[^w.*]', 'aawsd.*')) #['a', 'a', 's', 'd'] 取反 除了(w.*)都去出来了
print(re.findall('[^4,5]', '12344135')) #没有4或5 ['1', '2', '3', '1', '3']
#元字符 9:\ 反斜杠 1 反斜杠后跟元字符取出特殊功能 如 \* 取消重复匹配 的功能
# 2 反斜杠后跟普通字符实现特殊功能 如\n 换行
#这里我举一些普通字符的特殊含义
# \d=[0,9]
# \D=[^0,9]
# \s=[\t\n\r\f\v] 匹配任何空的字符
# \S=[^\t\n\r\f\v]匹配任何非空的字符
# \w=[a-zA-Z0-9]=[A-Z,a-z,0-9]匹配任何数字字母字符
# \W=[^a-zA-Z0-9] 匹配任何非数字 非字母 字符
# \b 匹配一个特殊字符边界
print(re.findall(r'i\b', 'i am a girl')) #['i']取到第一个 i 这里的‘r’是表示让字符串里的内容代表他本来代表的功能或内容
################
print(re.search('sd', 'sdffaafasd').group()) #sd search只取匹配到的第一个符合的字符或字符串
#元字符 10 :() 括号 11:| 竖线
print(re.search('(ad)+', 'adadadsadaf').group()) #adadad 取括号里面的整体
print(re.search('(ad)|3', 'ad3').group()) #ad
print(re.search('(ad)|3', '3ad').group()) #3 取ad 或3 竖线表示或


ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})', 'asdad321/kkk')
print(ret.group()) #321/kkk
print(ret.group('id')) #321
print(ret.group('name')) #kkk


正则表达式方法

fidall() :返回所有结果

search():返回匹配到的第一个对象(object),对象可以调用.group()返回结果

match(): 只在字符串开始 开始匹配,也只返回一个对象 对象可以调用.group()返回结果
print(re.match('ad', 'asssad')) #None
print(re.match('ad', 'adsdfad').group()) #ad


split(): 分割
print(re.split('s', 'aasdfghjkl')) #['aa', 'dfghjkl']
print(re.split('[s,j]', 'aasdfghjkl')) #['aa', 'dfgh', 'kl']
print(re.split('[s,j]', 'saasdfghjkl')) #['', 'aa', 'dfgh', 'kl']其中的空是有第一个‘s'前的空导致的

sub(): 替换
print(re.sub('d..g', 's.......d', 'liudongemidengmei')) #lius.......demis.......dmei

compile() 将正则表达式规则封装成一个对象 便于日后引用
obj =re.compile('\.com')
print(obj.search('zhengze.combiaodashi').group()) #.com
print(obj.search('laozid.comdengmmei').group()) #.com
补充几组图片:

 

 

 

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a small tree

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

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

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

打赏作者

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

抵扣说明:

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

余额充值