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

浅谈正则表达式一

时间:2019-04-07 15:44:23      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:注册   aabb   功能   不成功   格式   arch   返回   bsp   int   

‘‘‘
正则表达式作用:判断一个字符串是否匹配给定的格式:例如判断用户注册账号是否满足格式,抓取页面链接等。

‘‘‘
import re #使用正则表达式需要导入re模块
st = "123456@163.com"
st1 = re.findall(r^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.com$,st) #前面为匹配的规则,后面为原始字符串
print(st1)
#findall方法:在字符串中找到正则表达式所匹配的所有字符串,以列表形式返回,如果没有找到,返回空列表。
st2 = "小姐姐正在吃东西,小姐姐样子好可爱。"
st3 = re.findall("小姐姐",st2)
print(st3)

#match方法:从字符串起始位置匹配,匹配成功,返回一个匹配对象(对象中包含了匹配到的信息),匹配不成功,match()返回为空
st4 = re.match("小姐姐",st2)#注意match方法只能匹配一个
print(st4) #<re.Match object; span=(0, 3), match=‘小姐姐‘>

#search方法:扫描整个字符串,匹配成功,返回一个匹配对象,只能匹配一个。
st5 = re.search("小姐姐",st2)
print(st5)

#sub替换方法:
st6 = re.sub("小姐姐","狗狗",st2)
print(st6) #狗狗正在吃东西,狗狗样子好可爱。

#-----------------------元字符------------------------------------
‘‘‘
什么是元字符:本身具有特殊含义的字符。
常用元字符:
.:指通配符,代表任意一个字符
[]:通常用来匹配一个字符集,匹配[]中列举的字符.
^:匹配以什么开始的字符串
$:匹配以什么结尾的字符串
*:匹配一个字符出现0次或者无限次
+:匹配前一个字符出现1次或者无限次
?:匹配前一个字符出现0次或者1次,即要么有1次,要么没有
{m}:匹配前一个字符出现m次
{m,n}:匹配前一个字符出现m到n次
\:反斜杠后边跟元字符去除特殊功能
反斜杠后边跟普通字符实现特殊功能
\d:匹配任何十进制数,相当于类[0-9]
re.findall("\d","ww3361gg")也可以写为re.findall("[\d]","ww3361gg")
结果为:[‘3‘,‘3‘,‘6‘,‘1‘]
\D:匹配任何非数字字符,相当于类[^0-9]
\w:匹配任何字母数字字符相当于[a-zA-Z0-9]
re.findall("\w","wwww.5362.ew")
结果为:[‘w‘,‘w‘,‘w‘,‘w‘,‘5‘,‘3‘,‘6‘,‘2‘,‘e‘,‘w‘]
\W:匹配任何非字母数字字符相当于[^a-zA-Z0-9]
\b:匹配任何一个单词边界
\B:匹配非单词边界
(ab):将括号中字符作为一个分组
...
‘‘‘
# -----------------元字符.的使用-------------------------------
st1 = "丽萨在吃汉堡"
s = re.findall(r丽萨.,st1)
print(s) #[‘丽萨在‘]

#----------------元字符[]的使用---------------------------------
st2 = "I love you"
s = re.findall(r"[love]",st2)
print(s)  #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘o‘]

st3 = "露西 is eating apple"
s = re.findall(r"[a-z]",st3)
print(s)#[‘i‘, ‘s‘, ‘e‘, ‘a‘, ‘t‘, ‘i‘, ‘n‘, ‘g‘, ‘a‘, ‘p‘, ‘p‘, ‘l‘, ‘e‘]

# ------------------------元字符*的使用-------------------------
st = "ac"
st1 = re.findall(r"ab*c",st)
print(st1) #[‘ac‘] 0次也可以匹配到

st = "abbbbc"
st1 = re.findall(r"ab*c",st)
print(st1) #[‘abbbbc‘]

#-------------------------元字符+的使用-------------------------
st = "ac"
st1 = re.findall(r"ab+c",st)
print(st1) #[] 0次匹配不到

st = "abbbbc"
st1 = re.findall(r"ab+c",st)
print(st1) #[‘abbbbc‘]

# -------------------元字符?的使用-----------------------------
st = "abbbbc"
st1 = re.findall(r"ab?c",st)
print(st1) #[]

#--------------------元字符{m}的使用---------------------------
st = "abbbbc"
st1 = re.findall(r"ab{3}c",st)
print(st1) #[]

st = "abbbbc"
st1 = re.findall(r"ab{4}c",st)
print(st1) #[‘abbbbc‘]

#------------------元字符{m,n}的使用---------------------------
st = "abbbbc"
st1 = re.findall(r"ab{1,4}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{1,5}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{,6}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{4,}c",st) #最少四次到无限次
print(st1) #[‘abbbbc‘]

#----------------元字符^的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"^abb",st)
print(st1)#[‘abb‘]


#-----------------元字符$的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"ea$",st)
print(st1)#[‘ea‘]

#---------------元字符\b的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"\babb",st)
print(st1)#[‘abb‘, ‘abb‘, ‘abb‘]

#----------------元字符\B的使用-------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"\Bbb",st)
print(st1)#[‘bb‘, ‘bb‘, ‘bb‘]

#----------------元字符\的用法-------------------
st = "小姐姐正在吃东西,小姐姐好可爱,小姐姐吃饱了"
st1 = re.findall(r"小姐姐\?",st) #之前?代表匹配前一个字符出现0次或者1次,即要么有1次,要么没有,加了r防转义。
print(st1) #会把满足要求的都获取到[‘小姐姐‘, ‘小姐姐‘, ‘小姐姐‘]

#--------------------贪婪与非贪婪匹配-------------
st = "aaabbbbaaaabbbaaaaaabbb"
st1 = re.findall(r"a{2,4}",st) #正常模式-贪婪匹配
print(st1) #[‘aaa‘, ‘aaaa‘, ‘aaaa‘, ‘aa‘]

st = "aaabbbbaaaabbbaaaaaabbb"
st1 = re.findall(r"a{2,4}?",st) #非贪婪匹配,匹配最短的aa。
print(st1) #[‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘]

 

浅谈正则表达式一

标签:注册   aabb   功能   不成功   格式   arch   返回   bsp   int   

原文地址:https://www.cnblogs.com/jb9527/p/10665568.html

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