Python核心編程習題之——正則表達式

1. 識別后續(xù)的字符串:“bat”分唾,“bit”,“but”擒抛,“hat”推汽,“hit”或者“hut”。

[bh][aiu]t

2. 匹配由單個空格分割的任意單詞對歧沪,也就是姓和名歹撒。

[a-zA-Z]+\s[a-zA-Z]+

3. 匹配由單個逗號和單個空白符分隔的任何單詞和單個字母,如姓氏的首字母

[a-zA-Z]+,\s[a-zA-Z]

4. 匹配所有的有效的Python標識符集合

[a-zA-Z]\w+

5. 根據(jù)美國接到地址格式诊胞,匹配街道地址暖夭。美國接到地址使用如下格式:1180 Bordeaux Drive。使你的正則表達式足夠靈活,以支持多單詞的街道名稱迈着,如3120 De la Cruz Boulevard

\d+\s([a-zA-Z]+\s*)+

6. 匹配以“www”起始且以“.com”結(jié)尾的簡單Web域名:例如竭望,www://www.yahoo.com

^www[^\s]+com$

7. 匹配所有能夠表示Python整數(shù)的字符串集

[-+]?\d+

8. 匹配所有能夠表示Python長整數(shù)的字符串集

[-+]?\d+[lL]

9. 匹配所有能夠表示Python浮點數(shù)的字符串集

\d+\.\d*

10. 表示所有能夠表示Python復數(shù)的字符串集

\d*(-\d+j)?

11. 匹配所有能夠表示有效電子郵件的集合

\w+@[\w\.]+.com

12. 匹配所有能夠表示有效網(wǎng)址的集合(URL)

http://[\w\.]+\.(com|cn)

13. 創(chuàng)建一個能從字符串中提取實際類型名稱的正則表達式裕菠。函數(shù)將對于<type 'int'>字符串返回int

patt = r"<\w+\s'(\w+)'>"
data = type(1)
m = re.search(patt,data)
if m:
        print(m.group(1))

14. 處理日期市框,常見一個正則表達式來表示標準日歷中剩余三個月的數(shù)字

1[0-2]

15. 處理信用卡號碼

\d{4}(-\d{6}-\d{5}|(-\d{4}){3})

16. 為gendata.py更新代碼,是數(shù)據(jù)直接輸出到redata.txt而不是屏幕

from random import randrange, choice
from string import ascii_lowercase as lc
from time import ctime

tlds = ('com', 'edu', 'net', 'org', 'gov')

for i in range(randrange(5,11)):
    dtint = randrange(10**10)
    dtstr = ctime(dtint)
    llen = randrange(4, 8)
    c = []
    for j in range(llen):
        c.append(choice(lc))
    login = ''.join(c)
    dlen = randrange(llen, 13)
    d = []
    for j in range(dlen):
        d.append(choice(lc))
    dom = ''.join(d)
    with open('redata.txt','a') as f:
        line = '%s::%s@%s.%s::%d-%d-%d' %(dtstr, login, dom, choice(tlds), dtint, llen, dlen)
        f.writelines(line+'\n')

17. 判斷redata.txt中一周的每一天出現(xiàn)的次數(shù)

import re

days = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
days_count = {}
with open('redata.txt','r') as f:
    patt = r'\w{3}'
    for line in f:
        m = re.match(patt,line)
        day = m.group()
        if day not in days:
            continue
        if day not in days_count:
            days_count[day] = 1
        else:
            days_count[day] += 1
    print(days_count)

18. 提取

  • 提取每行中完整的時間戳
  • 提取每行中完整的電子郵件
  • 僅僅提取時間戳中的月份
  • 僅僅提取時間戳中的年份
  • 僅僅提取時間戳中的時
  • 僅僅從電子郵件地址中提取登錄名和域名
  • 使用你的電子郵件地址替換每一行數(shù)據(jù)中的電子郵件地址
import re
def find(line):
    patt = r'(\w+)\s(\w+)\s+(\d+)\s(\d+:\d+:\d+)\s(\d+)::(\w+@\w+\.\w+)::(\d+-\d+-\d+)'
    m = re.match(patt,line)
    return m

def find_email(email):
    patt = r'(\w+)@(\w+)\.(\w+)'
    m = re.match(patt,email)
    return m

with open('redata.txt','r') as f:
    for line in f:
        m = find(line)
        #年
        year = m.group(5)
        #月
        month = m.group(2)
        #日
        day = m.group(3)
        #時間
        time = m.group(4)
        #星期
        week = m.group(1)
        #時間戳
        timestamp = year+' '+month+' '+day+' '+time+' '+week
        #地址
        print(timestamp)
        email = m.group(6)
        m = find_email(email)
        name = m.group(1)
        main_host = m.group(2)
        second_host = m.group(3)
        print(name,main_host,second_host)

19. 區(qū)號 使用正則表達式匹配800-555-1212糕韧、555-1212,以及(800) 555-1212

((\d+-)|(\(\d+\)\s))?\d+-\d+
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喻圃,一起剝皮案震驚了整個濱河市萤彩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斧拍,老刑警劉巖雀扶,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肆汹,居然都是意外死亡愚墓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門昂勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浪册,“玉大人,你說我怎么就攤上這事岗照〈逑螅” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵攒至,是天一觀的道長厚者。 經(jīng)常有香客問我,道長迫吐,這世上最難降的妖魔是什么库菲? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮志膀,結(jié)果婚禮上熙宇,老公的妹妹穿的比我還像新娘。我一直安慰自己溉浙,他們只是感情好奇颠,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著放航,像睡著了一般烈拒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天荆几,我揣著相機與錄音吓妆,去河邊找鬼。 笑死吨铸,一個胖子當著我的面吹牛行拢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诞吱,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舟奠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了房维?” 一聲冷哼從身側(cè)響起沼瘫,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咙俩,沒想到半個月后耿戚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡阿趁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年膜蛔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脖阵。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皂股,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出命黔,到底是詐尸還是另有隱情屑墨,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布纷铣,位于F島的核電站卵史,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搜立。R本人自食惡果不足惜以躯,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啄踊。 院中可真熱鬧忧设,春花似錦、人聲如沸颠通。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顿锰。三九已至谨垃,卻和暖如春启搂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刘陶。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工胳赌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匙隔。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓疑苫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纷责。 傳聞我的和親對象是個殘疾皇子捍掺,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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

  • 初衷:看了很多視頻、文章再膳,最后卻通通忘記了挺勿,別人的知識依舊是別人的,自己卻什么都沒獲得饵史。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,009評論 0 20
  • 推薦幾個正則表達式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,491評論 9 151
  • 幾個正則表達式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
  • re模塊手冊 本模塊提供了和Perl里的正則表達式類似的功能,不關是正則表達式本身還是被搜索的字符串胜榔,都可以...
    喜歡吃栗子閱讀 4,003評論 0 13
  • “玉不琢胳喷,不成器;人不學夭织,不知道吭露。”出自《禮記》尊惰。我們都知道現(xiàn)在玉的價錢飆漲得飛快讲竿,好多人非常喜歡收藏玉,玉...
    浩若煙海閱讀 831評論 0 1