re模組與正規表示式的關係
正規表示式是一門獨立的技術,所有的程式語言都可以使用,但是如果想在python中使用,就必須依賴於re模組。
正則就是用來篩選特定內容的表示式,在python中 一般情況下 reg都是與正則有關
如果想匹配具體的內容,可以直接寫完整的內容,不需要寫正則。
字元組 [ ] 乙個字串裡面的表示式都是或的關係 ,abc|ab 這種寫法一定要將唱的放在前面
^與$連用,會精準限制匹配的內容,即兩者中間寫的什麼,匹配的字串就必須是什麼
^直接寫在外面,限制字串的開頭 [^] 除了寫的字元 其他都保留
正則在匹配的時候預設是貪婪匹配的(盡可能多的匹配),但是可以在量詞後面加上乙個?,講貪婪匹配轉變成非貪婪匹配(惰性匹配)
量詞必須跟在正則符號的後面,只能跟乙個限制符號
分組:當多個正則符號需要重複多次的時候或者當做乙個整體進行其他操作,那麼可以分組的形式
分組在正則的語法中就是()
findall
res = re.findall('找出字串中符合正規表示式全部內容 並且返回的是乙個列表,列表中的元素就是正則匹配到的結果[a-z]+
','eva egon jason')
#findall('正規表示式','帶匹配的字串')
print(res)
search
res = re.search('search不會給你直接返回匹配到的結果 而是給你返回乙個物件,必須呼叫group才能看到匹配到的結果a','
eva egon jason')
print(res) #
search不會給你直接返回匹配到的結果 而是給你返回乙個物件
print(res.group()) #
必須呼叫group才能看到匹配到的結果
注意:1.search只會依據正則查一次 只要查到了結果 就不會再往後查詢
2.當查詢的結果不存在的情況下 呼叫group直接報錯
match
res1 = re.search('注意:1.match只會匹配字串的開頭部分a','
eva egon jason')
#search('正規表示式','帶匹配的字串')
ifres1:
(res1.group())
res = re.match('
a','
eva egon jason')
(res)
print(res.group())
2.當字串的開頭不符合匹配規則的情況下 返回的也是none 呼叫group也會報錯
補充:
ret = re.split('正則在爬蟲中的應用[ab]
', '
abcd
') 先按'
a'分割得到''和'
bcd',在對''和'
bcd'分別按'b'
分割print(ret) ['', '', 'cd'
] 返回的還是列表
ret = re.sub('
\d', '
h', '
eva3egon4yuan4
',1) 將數字替換成'h'
,引數1表示只替換1個
sub(
'正規表示式
','新的內容
','待替換的字串
',n)
"""先按照正規表示式查詢所有符合該表示式的內容 統一替換成'新的內容' 還可以通過n來控制替換的個數
(ret) evahegon4yuan4
ret = re.subn('
\d', '
h', '
eva3egon4yuan4
') 將數字替換成'h'
,返回元組(替換的結果,替換了多少次)
ret1 = re.subn('
\d', '
h', '
eva3egon4yuan4
',1) 將數字替換成'h'
,返回元組(替換的結果,替換了多少次)
(ret) 返回的是乙個元組 元組的第二個元素代表的是替換的個數
obj = re.compile('
\d') #
將正規表示式編譯成為乙個 正規表示式物件,規則要匹配的是3個數字
ret = obj.search('
abc123eeee
') #
正規表示式物件呼叫search,引數為待匹配的字串
res1 = obj.findall('
347982734729349827384')
print(ret.group()) #
結果 : 123
print(res1) #
結果 : ['347', '982', '734', '729', '349', '827', '384']
肖申克的救贖
/ the shawshank redemption
/ 月黑高飛(港) / 刺激1995(臺)
導演: 弗蘭克·德拉邦特 frank darabont 主演: 蒂姆·羅蘋斯 tim robbins /...
1994 / 美國 / 犯罪 劇情
9.61489907人評價
希望讓人自由。
"""def
getpage(url):
response =urlopen(url)
return response.read().decode('
utf-8')
defparsepage(s):
com =re.compile(
'.*?.*?(?p\d+).*?(?p.*?)''
.*?(?p.*?).*?(?p.*?)評價
', re.s)
ret =com.finditer(s)
for i in
ret:
yield
defmain(num):
url = '
' %num
response_html =getpage(url)
ret =parsepage(response_html)
(ret)
f = open("
move_info7
", "
a", encoding="
utf8")
for obj in
ret:
(obj)
data =str(obj)
f.write(data + "\n"
)count =0
for i in range(10):
main(count)
count += 25
re模組與正規表示式
正規表示式,又稱正規表示式 正規表示法 正規表示式 規則表示式 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 是電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列匹配某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替...
正規表示式與re模組
一,正規表示式 正規表示式本身與python沒什麼關係,就是匹配字串內容的一種規則,只和字串相關。定義 正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特殊字元 及這些特殊字元的組合,組合乙個 規則字串 這個 規則字串 用來表達對字串的一種過濾邏輯。1,字元組,字元組 在同一位置可能出現...
re 正規表示式模組
import re 預定義字符集 d 數字 0 9 d 非數字 d s 空白字元 空格 t r n f v s 非空白字元 s w 單詞字元 a za z0 9 w 非單詞字元 w 匹配數量 匹配除換行符以外的任何單個字元 匹配前乙個字元0或無限次 盡可能多的匹配 盡可能少的進行匹配前邊的正規表示式...