1. 程式人生 > >正則表達式,re 和collect

正則表達式,re 和collect

pan 都沒有 close 結果 dad split strong re.search 方法

各種括號在正則裏的用法:

()包裹一段字符串,外面用一個功能符號包含。

{}裏面加一個數字,表示運行多少次,如果{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