2019-01-16正則表達(dá)式和pygame

一.正則表達(dá)式

1.什么是非貪婪:在正則中控制匹配不確定次數(shù)的符號后邊可以加?,來表示盡可能少的匹配
在貪婪的時候,匹配是盡可能多的匹配
注意:盡可能少是在能夠匹配到的前提下盡可能少
*?
+?
??
{M,}?
{N,M}?
{,N}?

def main():
print(re.search(r'\d+', 'abchs3482==sdd'))
print(re.search(r'\d+?', 'abchs3482==sdd'))
print(re.search(r'"name":".*?",', '====,"name":"yuting","age":18, "愛好":"編程",....'))

二.正則的相關(guān)方法

  1. compile(正則表達(dá)式) -> 將正則表達(dá)式轉(zhuǎn)換成正則對象
    編譯后可以直接通過對象調(diào)用相關(guān)的對象方法
re_object = re.compile(r'\d{3}')
re_object.fullmatch('432')
  1. fullmatch(正則表達(dá)式, 字符串) -> 讓字符串和正則表達(dá)式完全匹配晨仑,匹配成功返回匹配對象褐墅,匹配失敗返回None

應(yīng)用:檢測字符串內(nèi)容是否符合要求,例如:檢測賬號拆檬、密碼、判斷手機(jī)號妥凳、身份證號等是否合法

 result = re.fullmatch(r'(\d{3})=([a-z]+)', '342=sjaks')
print(result)

匹配對象
1).span() - 匹配到的字符串在原字符串中的下標(biāo)范圍(結(jié)果是元素)

print('====span====')
print(result.span())   # 獲取整個正則表達(dá)式匹配到的內(nèi)容的范圍
start, end = result.span()
print(start, end)

print(result.span(1)) # 獲取正則表達(dá)式中第一個分組匹配到的內(nèi)容的范圍
print(result.span(2)) # 獲取正則表達(dá)式中第二個分組匹配到的內(nèi)容的范圍
2). start()和end() - 匹配到的字符串在原字符串中的開始下標(biāo)和結(jié)束下標(biāo)

print('====start名竟贯,end====')
print(result.start(), result.end())
print(result.start(1), result.start(2))

3). group() - 獲取匹配到的字符串(結(jié)果是字符串)

print(result.group())   # 獲取整個正則匹配到的字符串
print(result.group(1))  # 獲取第一個分組匹配到的字符串
print(result.group(2))  # 獲取第二個分組匹配到的字符串
print(result.groups())  # 同時獲取所有分組匹配到的字符串(結(jié)果是元祖)

4). string - 獲取原字符串
print(result.string)
3.match(正則表達(dá)式,字符串) -> 讓字符串的開頭和正則表達(dá)式進(jìn)行匹配,匹配成功結(jié)果是匹配對象逝钥,否則是None
print(re.match(r'\D\d', 's3skjkjks'))
4.search(正則表達(dá)式,字符串) -> 在字符串中去匹配出第一個符合正則表達(dá)式的子串, 匹配成功結(jié)果是匹配對象,否則是None
print(re.search(r'[\u4e00-\u9fa5]{3}', 'hsj后視ss023你好嗎,skss上的30s'))
5.split(正則表達(dá)式,字符串) -> 將字符串按照滿足正則要求的子串進(jìn)行切割(返回值是列表)
print(re.split(r'\d+', 'asj38jkas0093kjsj78kajs89==asdfj3jkkss'))
6.sub(正則表達(dá)式,字符串1, 字符串2) -> 將字符串2中能夠和正則表達(dá)式匹配的子串替換成字符串1屑那,產(chǎn)生一個新的字符串

print(re.sub(r'\d+', '*', 'jsj93jksj93j5a45s3s是看得見'))
print(re.sub(r'傻逼|[傻艸草操]', '*', '你是傻逼嗎?艸!'))

7.findall(正則表達(dá)式, 字符串) -> 在字符串中獲取滿足正則表達(dá)式的所有的子串(結(jié)果是列表)
注意: 如果正則表達(dá)式中有分組艘款,直接獲取到的是分組中匹配到的內(nèi)容; 如果有多個分組列表中的元素是元

print(re.findall(r'\d+[a-z]', 'sjh83bkss93ksjhf9922'))
print(re.findall(r'(\d+)[a-z]', 'sjh83bkss93=sjhf9922'))
print(re.findall(r'abc(\d{2}|[A-Z]{2})', '=-aaabc73kkjabcKJL=3'))

8.finditer(正則表達(dá)式, 字符串) -> 在字符串中獲取滿足正則表達(dá)式的所有的子串(結(jié)果是迭代器,元素是匹配對象)

result = re.finditer(r'(\d+)[a-z]', 'sj8khk83jks數(shù)據(jù)310sj=sd')
print(result)
print(next(result).group())

9.re.I -> 忽略大小寫
匹配的約束條件是放在函數(shù)的flags參數(shù)中
print(re.fullmatch(r'[a-z]{2}', 'SA', re.I))
練習(xí)
驗證輸入用戶名和QQ號是否有效并給出對應(yīng)的提示信
要求:
用戶名必須由字母持际、數(shù)字或下劃線構(gòu)成且長度在6~20個字符之間
QQ號是5~12的數(shù)字且首位不能為0

    re_str1 = r'[a-zA-Z\d_]{6,20}'
    re_str2 = r'[1-9]\d{4,11}'

三.pygame

import pygame
導(dǎo)入pygame模塊

def base_game():
    # 1.初始化pygame, 做準(zhǔn)備工作
    pygame.init()
    # 2.創(chuàng)建游戲窗口
set_mode(窗口大小)  ==   set_mode((寬, 高))  - 會返回一個surface類型的對象
窗口大小對應(yīng)的值是一個元祖
    window = pygame.display.set_mode((400, 600))
    # 設(shè)置窗口標(biāo)題
    pygame.display.set_caption('游戲')

    # 設(shè)置窗口背景顏色
    """
    fill(顏色)  
    顏色是一個元祖,元祖有三個int類型的元素哗咆,返回是0~255蜘欲;分別代表R,G,B
    
    計算機(jī)三原色: 紅、綠晌柬、藍(lán)
    紅色 (255, 0, 0)
    綠色 (0, 255, 0)
    藍(lán)色 (0, 0, 255)
    白色 (255, 255, 255)
    黑色 (0, 0, 0)
    """
    window.fill((255, 255, 255))

    # 想要對窗口內(nèi)容進(jìn)行的修改有效姥份,必須執(zhí)行以下操作
    pygame.display.flip()

    # 3.讓游戲保持運(yùn)行狀態(tài)(游戲循環(huán))
    while True:
        # 4.不斷檢測游戲過程中是否有事件的產(chǎn)生
        for event in pygame.event.get():
            # 只有當(dāng)事件產(chǎn)生后才會進(jìn)入for循環(huán)
            # print('======')
            if event.type == pygame.QUIT:
                # return
                # 退出!
                exit()



def main():
    base_game()


if __name__ == '__main__':
    main()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市年碘,隨后出現(xiàn)的幾起案子澈歉,更是在濱河造成了極大的恐慌,老刑警劉巖屿衅,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷祥,死亡現(xiàn)場離奇詭異,居然都是意外死亡傲诵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門箱硕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拴竹,“玉大人,你說我怎么就攤上這事剧罩∷ò荩” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵惠昔,是天一觀的道長幕与。 經(jīng)常有香客問我,道長镇防,這世上最難降的妖魔是什么啦鸣? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮来氧,結(jié)果婚禮上诫给,老公的妹妹穿的比我還像新娘香拉。我一直安慰自己,他們只是感情好中狂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布凫碌。 她就那樣靜靜地躺著,像睡著了一般胃榕。 火紅的嫁衣襯著肌膚如雪盛险。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天勋又,我揣著相機(jī)與錄音苦掘,去河邊找鬼。 笑死赐写,一個胖子當(dāng)著我的面吹牛鸟蜡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挺邀,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼揉忘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了端铛?” 一聲冷哼從身側(cè)響起泣矛,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禾蚕,沒想到半個月后您朽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡换淆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年哗总,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倍试。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡讯屈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出县习,到底是詐尸還是另有隱情涮母,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布躁愿,位于F島的核電站叛本,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏彤钟。R本人自食惡果不足惜来候,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望样勃。 院中可真熱鬧吠勘,春花似錦性芬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峭拘,卻和暖如春俊庇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸡挠。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工辉饱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拣展。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓彭沼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親备埃。 傳聞我的和親對象是個殘疾皇子姓惑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容