import re
1.1 知識點:# ?!pattern,表示在沒有配到pattern的字串的前提下,再進行後續的正規表示式匹配,後續匹配仍然從被匹配字串的頭開始
1.2 答案:
print
(re.search(
"(?!^[0-9]+$)(?!^[a-za-z]+$)^[0-9a-za-z]$"
,"123asf"
).group())
# 123asf
1.3 解釋:
上述正則的意思為:在匹配(?![0-9]+$)以及(?!^[a-za-z]+$)過後,如果字串成功後在從頭去匹配(?![a-za-z]+$),最終匹配完。
2.1 知識點:# ?=pattern,表示在配到pattern的字串的前提下,再進行後續的正規表示式匹配,後續匹配仍然從被匹配字串的頭開始
2.2 答案:
# while true:
# pwd = input("please your password: ").strip() # 比如輸入:aa3@adf123
# pwd_pattern= re.compile("(?=.*[a-z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#%&])^([a-za-z0-9!@#%&])$")
# if pwd_pattern.search(pwd) is none:
# print("密碼強度不夠")
# else:
# break
2.3 解釋:
# 上述正規表示式的意思:
#(1)首先是(?=.*[a-z])匹配,.*表示密碼中可以包含多個字元,[a-z]代表密碼中需要包含至少乙個大寫字母,注意一定不要去掉.*寫成(?=[a-z]),那樣表示密碼只能由乙個字元組成,該字元是大寫字母
#(2)其次是(?=.*[a-z])匹配,同上,確保密碼中必須至少有乙個小寫字母
#(3)然後是(?=.*[0-9])匹配,同上,確保密碼中必須至少有乙個數字
#(4)然後是(?=.*[!@#%&])匹配,同上,,確保密碼中必須至少有乙個特殊符號!@#%&
#(5)最後是^([a-za-z0-9!@#%&])$,確保密碼是由[a-za-z0-9!@#%&]字元構成,至少有6位
# print(re.findall("(?:[a-za-z0-9]+)@(?:[0-9a-za-z]+).com","[email protected] ***@qq.com"))
# your_id=input(">>: ").strip()
# print(re.findall("^(?:[0-9])(?:[0-9]|x)$",your_id)) # 17個數字組成,最後乙個字元可以是數字或x
# print(re.findall('^(\d[\d|x])$',your_id))
# print(re.findall("^[0-9a-za-z]$","egonlinh"))
# name=input('>>: ').strip()
# print(re.search(r'[\u4e00-\u9fa5]+',name))
# print(re.findall(r'\d+(?:\.\d+)?', 'sww123kw11.333e2lkd'))
# print(re.findall(r'-\d+', '-12,3,54,-13.11,64,-9')) # 錯誤答案
# print(re.findall(r'(?!-\d+\.\d+)-\d+', '-12,3,54,-13.11,64,-9')) # 正確答案
# print(re.findall(r'\-?\d+(?:\.\d+)?', '-12.9,3.92,54.11,64,89,-9,-45.2'))
# print(re.findall(r'\-\d+(?:\.\d+)?', '-12.9,3.92,54.11,64,89,-9,-45.2'))
print
(re.findall(r'\d+\.\d+'
,'-12.9,3.92,54.11,64,89,-9,-45.2'
))
msg =
"""中文名 貝拉克·海珊·歐巴馬
外文名 barack hussein obama ii
別名 歐巴馬
性 別 男
國籍 美國
民 族 德裔族
出生地 美國夏威夷州檀香山
出生日期 2023年8月4日
職 業政治家、律師、**
畢業院校 哥倫比亞大學,哈佛大學
信 仰新教
主要成就 2023年伊利諾伊州參議員
主要成就 美國第56屆、57屆** 2023年諾貝爾和平獎獲得者 時代周刊年度風雲人物2008、2011 任期內清除本·拉登
代表作品 《我相信變革》《我父親的夢想》《無畏的希望》
所屬政黨美國民主黨
血 型 ab型
學 院西方學院
妻 子 公尺歇爾·拉沃恩·歐巴馬
"""
#外文名
print
(re.findall(
"外文名 (.*)"
,msg)
)
#出生日期
print
(re.findall(
'出生日期 (\d)年(\d+)月(\d+)日'
,msg)
)
#妻子姓名
print
(re.findall(
'妻 子 (\s+)'
,msg)
)
day 23 re模組 正規表示式
一 正規表示式 元字元 除了換行符外的任意字元 匹配除了換行符意外的任意字元 w 匹配數字,字母,下劃線 s 匹配空白符 b 匹配單詞的末尾 d 匹配數字 w 匹配除了數字,字母,下劃線 d 匹配數字數字 s 匹配除了空白符 開頭 結尾 字元組 除了字元組內的元素外 量詞,也叫限定符 p 次p次或更...
Day16正規表示式作業
1.使用者名稱匹配 要求 1.使用者名稱只能包含數字 字母 下劃線 2.不能以數字開頭 3.度在 6 到 16 位範圍內 re str a za z a za z 0 9 print fullmatch re str,a23456 密碼匹配 要求 1.不能包含 這些特殊符號 2.必須以字母開頭 3....
day16正規表示式作業
1.使用者名稱匹配 要求 1.使用者名稱只能包含數字 字母 下劃線 2.不能以數字開頭 3.度在 6 到 16 位範圍內 1.re str w result fullmatch re str,8 a 2.re str d result fullmatch re str,a22希宇 3 print f...