復習&正則&re模塊
正則
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
re模塊
1.Re模塊簡介 re模塊是python中處理正則表達式的一個模塊,通過re模塊的方法,把正則表達式pattern編譯成正則對象,以便使用正則對象的方法 效率問題: import re import timeit print(timeit.timeit(setup=‘‘‘import re; reg = re.compile(‘<(?P<tagname>\w*)>.*</(?P=tagname)>‘)‘‘‘, stmt=‘‘‘reg.match(‘<h1>xxx</h1>‘)‘‘‘, number=1000000)) print(timeit.timeit(setup=‘‘‘import re‘‘‘, stmt=‘‘‘re.match(‘<(?P<tagname>\w*)>.*</(?P=tagname)>‘, ‘<h1>xxx</h1>‘)‘‘‘, number=1000000)) reg = re.compile(‘<(?P<tagname>\w*)>.*</(?P=tagname)>‘) reg.match(‘<h1>xxx</h1>‘) re.match(‘<(?P<tagname>\w*)>.*</(?P=tagname)>‘, ‘<h1>xxx</h1>‘) 常用方法:先申明一個正則對象,在通過正則對象去匹配。這樣的效率高
1 re.compile(pattern[, flags]) re.I(re.IGNORECASE): 忽略大小寫(括號內是完整寫法,下同) M(MULTILINE): 多行模式,改變‘^‘和‘$‘的行為 S(DOTALL): 點任意匹配模式,改變‘.‘的行為 L(LOCALE): 使預定字符類 \w \W \b \B \s \S 取決於當前區域設定 U(UNICODE): 使預定字符類 \w \W \b \B \s \S \d \D 取決於unicode定義的字符屬性 X(VERBOSE): 詳細模式。這個模式下正則表達式可以是多行,忽略空白字符,並可以加入註釋。以下兩個正則表達式是等價的:
Re模塊的方法: match search Match從開頭開始匹配,匹配不到,返回空 Search從開頭開始匹配,然後第第二個開始匹配,只匹配一個結果。 Match的效率是最高的,就要求我們正則表達式要寫正確 Split split(string[, maxsplit]) 按照能夠匹配的子串將string分割後返回列表。maxsplit用於指定最大分割次數,不指定將全部分割。 import re p = re.compile(r‘\d+‘) print(p.split(‘one1two2three3four4‘)) 結果: [‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘‘] findall finditer sub
Re模塊的方法: group() group(0) group(1) group(“tagname”) gourps() groupdict()
Re模塊的方法: findall import re p = re.compile(r‘\d+‘) print(findall(‘one1two2three3four4‘)) 結果: [‘1‘, ‘2‘, ‘3‘, ‘4‘] finditer sub Split \d+ ‘one1two2three3four4’
復習&正則&re模塊