第07章課后題

7.1 首先導(dǎo)入re模塊,import re,然后利用re.compile()方法創(chuàng)建Regex對象
7.2 在創(chuàng)建Regex對象時,正則表達(dá)式中有很多字符串表達(dá)的并不是表面上的含義,如'\d',在正則表達(dá)式中代表的是一個任意的數(shù)字。為了表達(dá)其表面上的含義,必須在前面加上''來進(jìn)行轉(zhuǎn)譯。但是,通過在字符串的第一個引號之前加上r,可以將該字符串標(biāo)記為原始字符串,它不包括轉(zhuǎn)義字符。
7.3 Regex.search()方法返回的是Match對象
7.4 對Match對象采用Match.group()方法來得到匹配的字符串。group()方法中Match.group()和Match.group(0)都表示第一個匹配的完整的字符串。
7.5 group(0)表示第一個匹配的完整的字符串,group(1)表示匹配(\d\d\d)的字符串,group(2)表示匹配(\d\d\d\d)的字符串。
7.6 利用轉(zhuǎn)譯符,()和.來表示圓括號和句號。
7.7 正則表達(dá)式中采用了用圓括號分組,那么findall()方法就會返回由元組構(gòu)成的列表,且只返回圓括號內(nèi)分組的部分;否則,將返回由字符串構(gòu)成的列表。
7.8 |是管道符,代表’或‘的意思。
7.9 ?一,表示其前面的分組匹配0或1次;二,表示非貪心模式。
7.10 ’+‘表示至少匹配一次;’*‘表示可以不匹配,也可以匹配多次。
7.11 {3}表示匹配3次,{3, 5}表示最少匹配3次,最多匹配5次,且此處是貪心模式,盡量匹配更多的次數(shù)。
7.12 \d表示0-9的任一數(shù)字,\w表示任一字母,\s表示一個空格。
7.13 \D表示0-9以外的任一字符,\W表示除字母外的任一字符,\S表示除空格外的任一字符。
7.14 向re.compile()傳入re.IGNORECASE或re.I作為第二個參數(shù),讓匹配不區(qū)分大小寫。
7.15 句號匹配的是任一除換行符之外的字符。向re.compile()傳入re.DOTALL后意味著句號可以匹配任一字符,包括換行符。
7.16 .*可以匹配任意字符,.*?是其貪心模式。
7.17 [a-z0-9]
7.18 X drummers, X pipers, five rings, X hens
7.19 re.VERBOSE作為re.compile()方法的第二參數(shù),可以忽略正則表達(dá)式中的空格和注釋。
7.20 如果只是匹配‘42’,‘4,123’而不匹配‘12,34,567’,‘1234’。正則表達(dá)式為(r'^\d{1,3}(,\d{3})*$'),可以很好的匹配。
如果想要從一段文字中將以每三位數(shù)用逗號隔開這種形式的數(shù)字篩選出來,下面是嘗試寫的代碼,如果有bug或者更為簡潔的代碼,歡迎留言!

import re
text = '42sdf1,234ds6,368,745ds12,34,567sdfs1234'
matches = []
# the regex of numbers
findNumRegex = re.compile(r'\d+,[\d,]+|\d+')
#Put all numbers in a list.
numberList = findNumRegex.findall(text)
# The regex of a number with commas for every three digits.
numRegex = re.compile(r'^\d{1,3}(,\d{3})*)
# Find all right numbers.
for number in numberList:
    mo = numRegex.search(str(number))
    try:
        matches.append(mo.group())
    except:
        pass
print(matches) 

7.21 re.compile(r'[A-Z]\w+\sNakamoto')可以很好的匹配。
7.22

re.compile(r'''(Alice|Bob|Carol)                   # people name
           \s                                      # white space
           (eats|pets|throws)                      # motion
           \s                                      # white space
            (apples|cats|baseballs)                # things
           \.$                                     # period
           ''', re.VERBOSE|re.I)

可以很好的匹配。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容