4 3 1 re模組(正規表示式)

2021-08-25 19:32:53 字數 3575 閱讀 5121

正規表示式的元字元有. ^ $ * ? 對於前乙個字元重複次數在為m到n次,其中, = *, = , = ?

對於前乙個字元重複m次

\d 匹配任何十進位制數;它相當於類 [0-9]。

\d 匹配任何非數字字元;它相當於類 [^0-9]。

\s 匹配任何空白字元;它相當於類 [ fv]。

\s 匹配任何非空白字元;它相當於類 [^ fv]。

\w 匹配任何字母數字字元;它相當於類 [a-za-z0-9_]。

\w 匹配任何非字母數字字元;它相當於類 [^a-za-z0-9_]。

1.元字元([ ]),它用來指定乙個character class。所謂character classes就是你想要匹配的字元(character)的集合.字元(character)可以單個的列出,也可以通過」-「來分隔兩個字元來表示一 個範圍。例如,[abc]匹配a,b或者c當中任意乙個字元,[abc]也可以用字元區間來表示—[a-c].如果想要匹配單個大寫字母,你可以用 [a-z]。

2.元字元[^]. 你可以用補集來匹配不在區間範圍內的字元。其做法是把」^」作為類別的首個字元;其它地方的」^」只會簡單匹配 「^」字元本身。例如,[^5] 將匹配除 「5」 之外的任意字元。同時,在[ ]外,元字元^表示匹配字串的開始,如」^ab+」表示以ab開頭的字串。

>>> m=re.search("ab+","asdfabbbbcd")

>>>

print m.group()

abbbb

這裡的+代表字串ab後面有多少b都可以被列印出來。

>>> m=re.search("ab","asdfabbbbcd"

>>>

print m.group()

ab

如果沒有+,ab只列印一次。search一般從字元的任意位置開始匹配。

3.」^」在不同位置所代表的意義。

>>> re.search("[^abc]","abcd")  #"^"在首字元表示取反,即abc之 外的任意字元。

<_sre.sre_match object at>

>>> m=re.search("[^abc]","abcd")

>>> m.group()

'd'>>> m=re.search("[abc^]","^") #如果"^"在[ ]中不是首字元,那麼那就是乙個普通字元

>>> m.group()

'^'

4.元字元($)匹配字串的結尾或者字串結尾的換行之前。

>>> re.findall("foo.$","foo1\nfoo2\n")

['foo2']

>>> re.findall("foo$","foo1\nfoo2\n")

>>> re.findall("foo$","foo1\nfoo\n")

['foo']

>>> re.findall("foo.$","foo1\nfoo23\n")

「.」 表示可以匹配任意乙個字元,且只能匹配乙個字元,$從字串後面開始匹配,所以得到上述結果。

search和findall的區別:

search找到就返回,不會找到所有的,找不到就返回none;

findall會找到所有的。

>>> m=re.search("abcd", '1abcd2abcd')

>>> m.group() #找到即返回乙個match object,然後根據該物件的方法,查詢匹配到的結果。

'abcd'

>>> re.findall("abcd","1abcd2abcd")

['abcd', 'abcd']

#!/usr/bin/env python

#-*- coding: gbk -*-

__author__ = 'diao'

import re

import urllib2

class

todaymovie

(object):

'''獲取影院當日影視'''

def__init__

(self):

self.url =''

self.timeout = 5

self.filename = './todaymovie.txt'

'''定義內部變數'''

第一次寫 ,質量不好,這裡的抓取電影,有兩種格式,所以抓的時候分兩次抓的,我本來想能不能利用迴圈可以執行一次程式就把所有都抓出來,但是水平有限,不會用迴圈,所以就將程式執行兩次,寫入檔案時,將檔案寫入方式改為『a』,python程式順序執行,我把movielist1 = re.findall(『title=.*』,response.read())

放前面,就執行這個,另乙個就不執行了。還有就是後面抓的電影名稱重複兩次,我不知道怎麼去除一次。第一次寫,總算爬出來了,後面再。繼續學習

re 正規表示式模組

import re 預定義字符集 d 數字 0 9 d 非數字 d s 空白字元 空格 t r n f v s 非空白字元 s w 單詞字元 a za z0 9 w 非單詞字元 w 匹配數量 匹配除換行符以外的任何單個字元 匹配前乙個字元0或無限次 盡可能多的匹配 盡可能少的進行匹配前邊的正規表示式...

正規表示式 re模組

re是python中的正規表示式模組,正則也是每個人程式設計之路上必備的基礎技能。這部落格希望即便從來沒接觸過的人看了也會使用正規表示式字元 含義.匹配除了換行符外的任何字元。可以用re.dotall來設定匹配任何字元,包括換行符 丨a丨b 表示正規表示式匹配a或者b 匹配輸入字串開始的位置,如果設...

正規表示式re模組

正規表示式re模組 編譯正規表示式模式,返回乙個物件的模式。可以把那些常用的正規表示式編譯成正規表示式物件,這樣可以提高一點效率。1 compile 格式 re.compile pattern,flags 0 pattern 編譯時用的表示式字串。flags 編譯標誌位,用於修改正規表示式的匹配方式...