""" *************************** @Project :正则 @Author :majun @Date : 2020/10/29 10:41 ******************************* """ import re #1.匹配 aaa.aaa.aaa.aaa, 其中a为任意字母 def Aaa(): string='aaa.aaa.aaa.aaa' r=r'[a-zA-Z]{3}.[a-zA-Z]{3}.[a-zA-Z]{3}.[a-zA-Z]{3}' match=re.findall(r,string) print (match) #2.判断身份证号码,包括18位和15位的情况 def Sfc(): sfz_18=r'^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$' sfz_15=r'([1-9]d{5}d{2}(?:(?:0[1-9])|(?:10|11|12))(?:(?:[0-2][1-9])|10|20|30|31)d{3})' ID_18='350702199812220810' ID_15='310112850409522' match_18=re.match(sfz_18,ID_18).group() match_15=re.match(sfz_15,ID_15).group() print (match_18) print (match_15) #3. 判断是否符合 USD 格式 格式如 $1,123,343.12 def Usd(): dollar='$1,123,343.12' US_dollar = r'^$[1-9]d{0,2}((,d{3})|0)*(.d{2})$' match=re.match(US_dollar,dollar).group() print(match) # 4.单词匹配 # his history hisense his are 找出所有his的单词 # hised historyed hisenseed his aedre 找出所有后缀带ed的单词 def Words(): string_1 = 'his history hisense his are' string_2 = 'hised historyed hisenseed his aedre' r_1 = r'his' r_2 = r'[a-zA-Z]*ed' print(re.findall(r_1, string_1)) print(re.findall(r_2, string_2)) #2.info = """This is the first line. #Hi this is the second line. #This is the third line.""" # 匹配所有 This is the xxx line(不区分大小写) # 只匹配行首为This is the xxx line(不区分大小写) def String(): info = """This is the first line. Hi this is the second line. This is the third line.""" print(re.findall(r'this.*?line', info,re.I)) print(re.findall(r'^this.*?line', info,re.I)) # 3.思考单行模式和多行模式是否可以同时使用,如果可以将第2题同时使用单行模式和多行模式来匹配。 print(re.findall(r'this.*?line', info, re.M|re.I|re.S)) if __name__=='__main__': Aaa() Sfc() Usd() Words() String()