1.正則表達式: r"[bh][aiu]t"python
2.正則表達式:r"\w+ \w+"正則表達式
3.正則表達式:r"\w+, [\w]"app
4.正則表達式:r"[A-Z_a-z][\w_]*"dom
5.正則表達式:r"\d+ [a-zA-z]+[a-zA-z ]*"code
6.正則表達式:r"www\.\w+\.(com|edu|net)"utf-8
7-8.正則表達式:r"^-?(\d*)|(0[0-7]*)|(0[xX][0-9a-fA-F]+)$"get
9.正則表達式:r"^\d+\.\d*$"string
10.正則表達式:r"(\d+(\.\d*)?)?[\+-]?\d+j"it
11.正則表達式:r"[a-zA-z][\w_]*@\w[\w-]*\.[a-zA-z]{2,}" #假設郵件前綴能夠包含字母、數字和下劃線,且以字母開頭class
13.
# -*- coding: utf-8 -*- import re def gettype(val): typestr = str(type(val)) mytype = re.match(r"", typestr).group(1) systype = type(val).__name__ if mytype == systype: print u"類型是:", mytype else: print u"錯誤"
14. r"1[0-2]"
15. A. r"([0-9]{4}-?[0-9]{6}-?[0-9]{5})|(([0-9]{4}-?){4})"
B.
def CheckCardNum(card_num): "檢驗卡號的有效性" import re if not isinstance(card_num, str): card_num = str(card_num) m = re.match(r"([0-9]{4}-?[0-9]{6}-?[0-9]{5})|(([0-9]{4}-?){4})", card_num) if m is not None: if '-' in card_num: card_num = card_num.replace('-','') sum = 0 if len(card_num) == 15: for i, num in enumerate(card_num): num = int(num) if (i+1)%2: sum += num else: num=num*2 if num*2 < 9 else num*2-9 sum += num else: for i, num in enumerate(card_num): num = int(num) if (i+1)%2: num=num*2 if num*2 < 9 else num*2-9 sum += num else: sum += num if sum%10 == 0: print u"卡號輸入正確" else: print u"請輸入正確的卡號"
16.
#!/usr/bin/env python from random import randint, choice from string import lowercase from sys import maxint from time import ctime f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w') doms = ('com', 'edu', 'net', 'org', 'gov') for i in range(randint(5, 10)): dtint = randint(0, maxint-1) dtstr = ctime(dtint) shorter = randint(4, 7) em = '' for j in range(shorter): em += choice(lowercase) longer = randint(shorter, 12) dn = '' for j in range(longer): dn += choice(lowercase) eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em, dn, choice(doms), dtint, shorter, longer) f.writelines(eachline+'\n') f.close()
17.
#!/usr/bin/env python # -*- coding:utf-8 -*- from random import randint, choice from string import lowercase from sys import maxint from time import ctime f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w') doms = ('com', 'edu', 'net', 'org', 'gov') for i in range(randint(5, 10)): dtint = randint(0, maxint-1) dtstr = ctime(dtint) shorter = randint(4, 7) em = '' for j in range(shorter): em += choice(lowercase) longer = randint(shorter, 12) dn = '' for j in range(longer): dn += choice(lowercase) eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em, dn, choice(doms), dtint, shorter, longer) f.writelines(eachline+'\n') f.close() weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] f = open(r"E:\code\Core Python Programming\15\redata.txt", 'r') datas = f.readlines() Montimes, Tuetimes, Thutimes, Wedtimes, Fritimes, Sattimes, Suntimes = 0, \ 0, 0, 0, 0, 0, 0 times = {'Mon': Montimes, 'Tue': Tuetimes, 'Wed': Wedtimes, 'Thu': Thutimes, \ 'Fri': Fritimes, 'Sat': Sattimes, 'Sun': Suntimes} for data in datas: for weekday in times: if weekday in data: times[weekday] += 1 break for weekday in weekdays: print u"%s 出現的次數時:%d" % (weekday, times[weekday])
18.
#!/usr/bin/env python # -*- coding: utf-8 -*- from random import randint, choice from string import lowercase from sys import maxint from time import ctime import re f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w') doms = ('com', 'edu', 'net', 'org', 'gov') for i in range(randint(5, 10)): dtint = randint(0, maxint-1) dtstr = ctime(dtint) shorter = randint(4, 7) em = '' for j in range(shorter): em += choice(lowercase) longer = randint(shorter, 12) dn = '' for j in range(longer): dn += choice(lowercase) eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em, dn, choice(doms), dtint, shorter, longer) f.writelines(eachline+'\n') f.close() f = open(r"E:\code\Core Python Programming\15\redata.txt", 'r') check = True patt = r"([\w :]{24})[a-z@\.:]+(\d+).*" flines = f.readlines() for eachline in flines: datadtstr = re.match(patt, eachline).group(1) datadtint = re.match(patt, eachline).group(2) if datadtstr == ctime(int(datadtint)): continue else: check = False break if check: print u"數據無缺!" else: print u"數據有誤!"
19. patt = r"[\w :]{24}" re.search()
20. patt = r"[a-z]*@[a-z\.]*" re.search()
21. patt = r"[A-za-z ]{4}([a-zA-Z]{3})" (re.search(patt, string).group(1))
22. patt = r"\d{4}:" re.search(patt, string).group()[:4]
23. patt = r"(\d{2}:){2}\d{2}" re.search()
24-25. patt = r"\b[a-z]+\b" re.findall()
26.
newlines = [] f = open(r"redata.txt", 'r') for eachline in f.readlines(): newline = re.sub(r'\b[a-z]+@[a-z\.]+', 'myemail@gmail.com', eachline) newlines.append(newline) f.close() f = open(r"redata.txt", 'w') f.writelines(newlines)
27.
f = open(r"redata.txt", 'r') for eachline in f.readlines(): month_day = re.findall(r'\b[A-Z][a-z]{2}\b', eachline) month = month_day[1] day = month_day[0] year = re.search(r'(\d{4}):', eachline).group(1) print '%s %s, %s' % (month, day, year)
28. patt = r"(\d{3}-)?\d{3}-\d{4}"
29. patt = r"((\d{3}-)|(\(\d{3}\)))?\d{3}-\d{4}"