import re # str1 = 'imook python' # pa = re.compile(r'imook') # ma = pa.match(str1) #输出匹配到的字符串 #print(ma.group()) #输出匹配到的字符串的位置 #print(ma.span()) # ma = re.match(r'imook','imook python') # print(ma.group()) # imook #. 匹配任意字符(除了 ) #[...] 匹配字符集 #d/D 匹配数字/非数字 #s/S 匹配空白/非空白 #w/W 匹配单词字符【a-zA-Z0-9】/非单词字符 #* 匹配前一个字符0次或无限次 #+ 匹配前一个字符1次或无限次 #? 匹配前一个字符0次或者1次 #{m}/{m,n} 匹配前一个字符m次或者n次 #*?/+?/?? 匹配模式变为非贪婪 尽可能少匹配字符 #^ 匹配字符串开头 #$ 匹配字符串结尾 #A/ 指定的字符串必须出现在开头/结尾 #| 匹配左右任意一个表达式 #(ab) 括号中表达式作为一个分组 #<number> 引用编号为num的分组匹配到的字符串 #(?P<name>) 分组去一个别名 #(?P=name) 引用别名为name的分组匹配字符串 # ma = re.match(r'[A-z][a-z]*','Ab1dd') # print(ma.group()) # Ab #匹配划线字母开头的字符串 # ma = re.match(r'_[a-zA-Z]+[_W]*','_dshdg') # print(ma.group()) # _dshdg #匹配0-99的数字 # ma = re.match(r'[1-9]?[0-9]','99') # print(ma.group()) # 99 #匹配邮箱 # ma = re.match(r'[a-zA-Z0-9]{6}@163.com','abc123@163.com') # print(ma.group()) # abc123@163.com # searh(pattern,string,flags=0) 在一个字符串中查找匹配 # findall(pattern,string,flags=0) 找到匹配,返回所有匹配部分的列表 #查找字符串中出现的数字 # str1 = "imooc videomnum = 1000" # info = re.search(r'd+',str1) # print(info.group()) # 1000 # str2 = 'c++ = 100, java = 99, python = 80' # info = re.findall(r'd+',str2) # print(info) # ['100', '99', '80'] # sub(pattern,repl,string,count=0,flags=0) #将字符串中匹配正则表达式的部分替换为其他值 # str3 = "imooc videomnum = 1000" # info = re.sub(r'd+','1001',str3) # print(info) # imooc videomnum = 1001 # def addl(match): # val = match.group() # num = int(val)+1 # return str(num) # str3 = "imooc videomnum = 1000" # info = re.sub(r'd+',addl,str3) # print(info) # imooc videomnum = 1001 #split(pattern,string,maxplit=0,flags=0) #根据匹配分割字符串,返回分割字符串组成的列表 # str4 = 'imooc:C C++ Java Python' # info = re.split(r':| ',str4) # print(info) # ['imooc', 'C', 'C++', 'Java', 'Python'] # str4 = 'imooc:C C++ Java Python,C#' # info = re.split(r':| |,',str4) # print(info) # ['imooc', 'C', 'C++', 'Java', 'Python', 'C#']