import re """ ^表示以什么开头,^s表示以s开头,后面可以是任意字符串 . 表示任何字符,不管事中英文还是特殊字符 * 表示前面的字符重复多次 $ 表示的是以什么符号结束 ?非贪婪模式,就是从左边开始匹配 ()表示只取某个指定的字符串 + 至少出现一次,例如s.+g就是从第一个g开始,中间不管有什么,只要下一个是s即可 {} 表示前面的符号出现几次,如{2}则是出现两次,{2,}出现两次以上,{2,5}出现两次以上,五次以下 | 表示的是或 [] 匹配中括号里的任意一个字符,[0-9]表示的是0-9的任何一个数字,[^1]表示的是非1的任何字符,中括号的的特殊字符没有特殊的含义 \s 表示的是空格 \S 表示的只要不是空格的一个字符就可以 \w 表示的是[a-zA-Z0-9] \W 表示的不是w表示的含义即可 [\u4E00-\u9FA5] 表示的是中文 \d 表示的数字 """ line = 'assoooooooooooongtengshsfjkgteng123' regex_str = '^s.*' if re.match(regex_str,line): print('yes') else: print('no') regex_str1 = '.*3$' line = 'assoooooooooooongtengshsfjkgteng123' if re.match(regex_str1,line): print('yes') regex_str2 = '.*(s.*g).*' #左边贪婪,右边贪婪 line = 'assoooooooooooongtengshsfjkgteng123' match_obj = re.match(regex_str2,line) if match_obj: print(match_obj.group(1)) regex_str3 = '.*?(s.*g).*' #左边非贪婪,右边贪婪 line = 'assoooooooooooongtengshsfjkgteng123' match_obj1 = re.match(regex_str3,line) if match_obj1: print(match_obj1.group(1)) regex_str4 = '.*?(s.*?g).*' #左边非贪婪,右边非贪婪 line = 'assoooooooooooongtengshsfjkgteng123' match_obj4 = re.match(regex_str4,line) if match_obj4: print(match_obj4.group(1)) regex_str5 = '.*(s.+g).*' line = 'assoooooooooooongtengshsfjkgteng123' match_obj5 = re.match(regex_str5,line) if match_obj5: print(match_obj5.group(1)) regex_str6 = '.*(g.{2,7}g).*' line = 'assoooooooooooongtengshsfjkgteng123' match_obj6 = re.match(regex_str6,line) if match_obj6: print(match_obj6.group(1)) regex_str7 = '([fsdao].*)' line = 'assoooooooooooongtengshsfjkgteng123' match_obj7 = re.match(regex_str7,line) if match_obj7: print(match_obj7.group(1)) regex_str8 = '.*([\u4E00-\u9FA5]+大学)'#贪婪模式 line1 = 'study in 上海交通大学' match_obj8 = re.match(regex_str8,line1) if match_obj8: print(match_obj8.group(1)) regex_str9 = '.*?([\u4E00-\u9FA5]+大学)' line1 = 'study in 上海交通大学' match_obj9 = re.match(regex_str9,line1) if match_obj9: print(match_obj9.group(1)) regex_str10 = '.*?(\d+)'#'.*(\d{7})' line2 = 'dsad 3214134' match_obj10 = re.match(regex_str10,line2) if match_obj10: print(match_obj10.group(1))