re.compile(pattern):编译正则表达式,返回编译后的模正则表达式对象,该对象同样拥有match、search等方法。
1 2 3 4 5 6 7 | import re pattern = re. compile ( 'python' ) # compile将字符串当做正则表达式来编译 result = pattern.search( 'hello python!' ) print (result) #>>><re.Match object; span=(6, 12), match='python'> print (result.group()) #>>>python |
re.match(pattern, string):匹配字符串的开头,成功则返回匹配对象,否则返回None
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import re result = re.match( 'a' , 'abc' ) # match是从字符串的开头开始匹配 print (result) #>>><re.Match object; span=(0, 1), match='a'> print (result.group()) # 并不直接返回匹配成功的字符串,需要使用group()方法 #>>>a result = re.match( 'a' , 'dabc' ) #因为开始不是a,所以没匹配成功 print (result) #>>>None result = re.match( 'abc$' , 'abc' ) # $是指被匹配字符的最后一个字母,如果是re.match('ab$', 'abc'),是不能匹配成功的 print (result) #>>><re.Match object; span=(0, 3), match='abc'> print (result.group()) # 并不直接返回匹配成功的字符串,需要使用group()方法 #>>>abc |
re.search(pattern, string):从字符串开头开始查找匹配,直到匹配成功,则不再往后继续查找匹配,成功返回匹配对象,否则返回None。
1 2 3 4 5 6 7 8 9 10 11 | import re result = re.search( 'python' , 'abcpythondef' ) # 在字符串的全文中搜索匹配一次,如果用match会报错 print (result) #>>><re.Match object; span=(3, 9), match='python'> print (result.group()) #>>>python result = re.search( 'aal?' , 'aaexaaa' ) # ?匹配0次或者1次 print (result) #>>><re.Match object; span=(3, 9), match='python'> print (result.group()) #>>>aa |
re.findall(pattern, string):查找匹配字符串中所有内容,返回查找成功的字符串的列表,如果字符串中没有匹配成功的内容,则返回空列表
1 2 3 4 | import re result = re.findall( 'python' , 'abc python def python ghi' ) ##findall 不需要group来匹配 print (result) #>>>['python', 'python'] |
re.split(pattern, string, maxsplit=0):使用匹配成功后的字符串作为“分割符”,返回分割后的字符串列表,maxsplit为分割的次数,默认0不是分割0次,而是分割所有。
1 2 3 4 5 6 7 | import re result = re.split( 'a' , '1a2a3a4guyuyun' ) # 将匹配成功的字符串用作字符串分隔符,返回分隔后的字符串列表 print (result) ##split也不需要group匹配 #>>>['1', '2', '3', '4guyuyun'] result = re.split( 'c' , '1a2a3a4guyuyun' ) # 将匹配成功的字符串用作字符串分隔符,返回分隔后的字符串列表 print (result) ##split也不需要group匹配 #>>>['1a2a3a4guyuyun'] |
re.sub(pattern, repl, string, count=0):使用正则表达式pattern在字符串string中匹配查找,匹配查找成功后使用新字符串repl替换掉匹配成功的字符串,并返回,count为替换次数,默认0不是替换0次,而是替换所有。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import re result = re.sub( 'c' , 'z' , 'click' , 2 ) # 使用匹配成功的字符串替换成指定的字符串,参数依次为正则表达式,匹配成功后要去替换的字符串,原字符串,2为替换次数 print (result) # 返回替换后的字符串 #>>>zlizk def sub_no_use_match(match_obj): # 用不到模式对象match_obj,但是该函数必须有这个参数 print (match_obj.group()) #>>>27 return '36' result = re.sub(r '\d+' , sub_no_use_match, 'Python27' ) # 以函数返回的字符串替换匹配成功的字符串 print (result) #>>>Python36 def sub_use_match(match_obj): # 使用模式对象match_obj来返回最终的字符串 print (match_obj.group()) #>>>27 return match_obj.group() + 'hahahaha' result = re.sub(r '\d+' , sub_use_match, 'Python27' ) print (result) #>>>Python27hahahaha |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步