- 寫一個(gè)正則表達(dá)式判斷一個(gè)字符串是否是ip地址
ip = input('請輸入ip地址:')
# ip分為三位數(shù)的情況:1[0-9][0-9]货抄、2[0-4][0-9]述召、25[0-5]兩位數(shù)的情況:[1-9][0-9]一位數(shù)的情況:[0-9]
str = r'^((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))$'
if re.fullmatch(str,ip):
print('正確')
else:
print('錯(cuò)誤')
結(jié)果:
- 計(jì)算一個(gè)字符串中所有的數(shù)字的和
str = 'hello90abc 78sjh12.5'
re_str = r'\d+\.\d|\d+'
values = re.findall(re_str,str)
sum1 = 0
for value in values:
sum1 += float(value)
print(sum1)
結(jié)果:
- 驗(yàn)證輸入的內(nèi)容只能是漢字
# 漢字的編碼范圍 4E00-9FA5
re_content = r'[\u4e00-\u9fa5]+'
while True:
content = input('請輸入漢字:')
if re.fullmatch(re_content,content):
print('輸入的不是漢字')
else:
print('是漢字')
break
結(jié)果:
- 電話號碼的驗(yàn)證
while True:
tel = input('請輸入電話號碼:')
re_tel = r'^1[3|4|5|8][0-9]\d{8}$'
if re.fullmatch(re_tel,tel):
print('輸入正確')
break
else:
print('輸入錯(cuò)誤')
結(jié)果:
- 簡單的身份證號的驗(yàn)證
# 身份證15位編碼規(guī)則:dddddd yymmdd xx p
# dddddd:6位地區(qū)編碼
# yymmdd: 出生年(兩位年)月日,如:910215
# xx: 順序編碼蟹地,系統(tǒng)產(chǎn)生积暖,無法確定
# p: 性別,奇數(shù)為男怪与,偶數(shù)為女
#
# 身份證18位編碼規(guī)則:dddddd yyyymmdd xxx y
# dddddd:6位地區(qū)編碼
# yyyymmdd: 出生年(四位年)月日夺刑,如:19910215
# xxx:順序編碼,系統(tǒng)產(chǎn)生,無法確定遍愿,奇數(shù)為男存淫,偶數(shù)為女
# y: 校驗(yàn)碼,該位數(shù)值可通過前17位計(jì)算獲得
# 15位:[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3} 月份為01-12沼填;日期為:01-31
# 18位:[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx]) 多了年份的判斷:第一位為1-9桅咆;后面3個(gè)為數(shù)字
while True:
id = input('請輸入身份證號碼:')
re_id = r'^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$'
if re.fullmatch(re_id,id):
print('輸入正確')
break
else:
print('輸入錯(cuò)誤')
結(jié)果:
二、不定項(xiàng)選擇題
- 能夠完全匹配字符串“(010)-62661617”和字符串“01062661617”的正則表達(dá)式包括(A坞笙、B岩饼、D )
A. “(?\d{3})?-?\d{8}”
B. “[0-9()-]+”
C. “[0-9(-)]\d*”
D. “[(]?\d[)-]*\d*”
能夠完全匹配字符串“c:\rapidminer\lib\plugs”的正則表達(dá)式包括(B、C )
A. “c:\rapidminer\lib\plugs”
B. “c:\rapidminer\lib\plugs”
C. “(?i)C:\RapidMiner\Lib\Plugs” ?i:將后面的內(nèi)容的大寫變成小寫
D. “(?s)C:\RapidMiner\Lib\Plugs” ?s:單行匹配能夠完全匹配字符串“back”和“back-end”的正則表達(dá)式包括( A薛夜、C籍茧、D )
A. “\w{4}-\w{3}|\w{4}” match->back,back-end fullmatch-> back,back-end
B. “\w{4}|\w{4}-\w{3}” match-> back, back fullmatch-> back,back-end
C. “\S+-\S+|\S+”
D. “\w\b-\b\w|\w*”能夠完全匹配字符串“go go”和“kitty kitty”,但不能完全匹配“go kitty”的正則表達(dá)式包括(A梯澜、C寞冯、D )
:\1就是重復(fù)前面第一個(gè)()/組合里面的內(nèi)容
:\2就是重復(fù)前面第二個(gè)()/組合里面的內(nèi)容
A. “\b(\w+)\b\s+\1\b”
B. “\w{2,5}\s*\1”
C. “(\S+) \s+\1”
D. “(\S{2,5})\s{1,}\1”能夠在字符串中匹配“aab”,而不能匹配“aaab”和“aaaab”的正則表達(dá)式包括(B晚伙、C )
A. “a*?b”
B. “a{,2}b”
C. “aa??b”
D. “aaa??b”