正則表達式,re 和collect
各種括號在正則裏的用法:
()包裹一段字符串,外面用一個功能符號包含。
{}裏面加一個數字,表示運行多少次,如果{1,3}則表示運行1-3次。
[],裏面加數字,表示從哪到哪,例:【1,9】表示從1到9.
^表示首字母,$表示尾字母。
|表示,或。
以下例子:
import re phone_number = input(‘please input your phone number : ‘) if re.match(‘^(13|14|15|18)[0-9]{9}$‘,phone_number): print(‘是合法的手機號碼‘) else: print(‘View Code不是合法的手機號碼‘)
.在正則裏表示的是所有的除了換行符外任意字符,.只表示一個字符。
\w匹配字母或數字或下劃線
\s匹配任意的空白符
\d匹配數字
\n匹配一個換行符
\t匹配一個制表符
\b表示一個單詞的結尾
^匹配字符串的開頭,
$匹配字符串的結尾
\W表示的是非字符串非字母非下劃線的所有字符,和\w是2個完全相反一面,\W和\w可以表示所有的字符串,也就是任意字符串。
\D匹配非數字,
\S匹配非空白符
a|b匹配字符a或字符b
(^....)匹配除了字符組中字符的所有字符。
--------------------------------------------------------------------------------------
量詞:
*表示的是重復零次或很多次
+表示的是重復1次或很多次
?表示重復0次貨一次
{n}重復n次
{n,}重復n次或很多次
{n,m}重復n-m次
----------------------------------------------
李[傑聯營二棍子]* 待匹配字符(李傑和李聯營和李二棍子) 匹配結果:李傑,李聯營,李二棍子
表示:李字後面【】裏所含有字符的任意次數,因為【】裏沒有和所有‘和’字有關的都沒有匹配。
李【^和】*:表示的是李後面可以跟著不是‘和’字的所有字符。
[\d] 456fsdf123 出來的是不同行的4,5,6,1,2,3,
[\d]+ 456dsfds3 出來的是4,5,6在一行 3獨立在另外一行。
.*?p前面取任意長度字符,直到p。
re模塊下的常用方法:
re.findall-----找到字符串中所有的a,並顯現出來
import re
ret=re.findall(‘a‘,‘asdasd asdasd‘)
print(ret)
===>‘a‘‘a‘‘a‘‘a‘
re.search--------找到字符串中的第一個S並顯現出來,還要用加上。group才會顯示
ret=re.search(‘s‘,‘sdads,sdads‘)
print(ret.group())
===>s
re.match---------------------------表示字符串中首字母是否匹配,如果是一樣哪就顯示,如果不是就會顯示出錯。當然還是要用group顯示。
ret=re.match(‘a‘,‘asd‘)
print(ret.group())====》a
-------------------------------------------
re.split-----------這裏需要註意首先切分的地方,‘ad’和‘[ad]’切出來的結果
是不一樣的,‘ab’的話是ab連在一起的切,而【ab】是指凡是有ab就切。
import re
ret=re.split(‘[ad]‘,‘sadasd‘)
print(ret)
正則表達式,re 和collect