一.將鏈結url原始碼讀出,將其作為列表輸出
二.使用正規表示式將原始碼中有關的原始碼篩選出來,(*.jpg檔案)
三.在輸出的過程中按照自己的方式命名
這裡邊唯一的難點恐怕是正規表示式的書寫,下面我們初步系統的講解一下正規表示式:
前面有一講專門介紹了正規表示式
, 具體可以檢視鏈結,這裡只進行一些重要的補充。
如上,\b可以控制開頭和結尾,這種可以用來匹配整個單詞而不只是其中的一部分
雖然之前的正規表示式已經描述,這裡在熟悉一下:『.』匹配除了換行符的任意字元,注意不包含換行符,『*』也是元字元,它代表的既不是字元也不是位置,而是數量
因此.*意味著任意數量的不包含換行的字元,如上\bhi\b.*\blucy\b,這裡表示開頭為hi,結尾為lucy,中間為任意多個字元(可以沒有)
總結:+:重複一次或更多次
?:重複0次或者一次
:重複n次
:重複n次或更多次
:重複n到m次
如上可以看出?和\d{}等的用法,但是也可以看出這種**號碼匹配是有問題的(半括號也可以匹配成功)
分支條件:
是指n種方式並列,從左向右進行匹配,當第一種情況不匹配成功時就匹配第二種,,使用'|'符號,以此類推
如上是兩種情況,一種是有括號的一種是沒有括號的,但是注意以下特別情況:
\d-\d|\d
\d|\d-\d
如上兩個匹配的過程是不同的,如果是前者,先匹配約束強的,如果不能匹配,才進入\d。但是後者相反,因此一般情況下我們採用前者
分組技術:
匹配最少重複:
正規表示式的特點是貪心法的思想,即通常的行為是匹配盡可能多的字元,如a.*b,它將會匹配最長的以a開頭以b結尾的字串。如aabab則會匹配出aabab
那麼如何匹配盡可能少的字元呢:
答案是使用.*?,如下:
他會匹配aab和ab,注意第乙個為什麼不匹配ab呢?因為正規表示式中最先開始的匹配有最高的優先順序。
總結:
*?重複任意次,但盡可能少重複
+?重複一次或多次,但盡可能少重複
??重複0次或1次,但盡可能少重複
?重複n次到m次,但盡可能少重複
注釋:
?#comment
2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)
後向引用:
如上\1表示分組內的項,兩個完整的單詞中間夾著空白字元即可(空白字元可以是空格、tab等)
python小菜的學習之路之python初識
筆者介紹 本文python初學者,因為名字內帶xiong,因此自嘲 熊小菜 熊小菜因為在解決課題問題時,接觸到過多的python,這對於乙個c 程式設計師而言是鬱悶的,此處,引用一句名言 既然你改變不了環境,那就學會適應它 因此,熊小菜開始進行python的學習,希望終有一天從熊小菜轉變成熊小神。話...
Python之路之socket陷阱
在kali的shell裡面寫python 寫一段小指令碼,執行卻發現各中錯誤 經過多次嘗試,原來是目標的埠連線失敗導致,而不是 的錯 驗證 usr bin python import socket socket.setdefaulttimeout 2 s socket.socket try s.co...
python 課後作業 python之路之課後作業
usr bin env python coding utf 8 importsysimportos teacher list pickle.load open setting.teacher db dir,rb for num,item in enumerate teacher list,1 pri...