1. 程式人生 > >Python :正則表示式(1)

Python :正則表示式(1)

#正則表示式
需要呼叫的模組 : import re
#函式引數:
patter :需要匹配的正則表示式
string:需要匹配的字串
flags :標誌位,用於控制正則的匹配方式
{
re.I :忽略大小寫

var =  re.match("www","Www.baidu.com.",flags=re.I)
print(var)
結果:<re.Match object; span=(0, 3), match='Www'>
var =  re.match("www","www.baidu.com.",flags=re.I)
print(var)
結果:<re.Match object; span=(0, 3), match='www'>
    re.L   :本地化識別
    re.M   : 多行匹配,影響 ^ 和 $
    re.S     : "."匹配包括任意的字元
    re.U    :根據Unicode影響 \w \W \b \B
    re.X   :更靈活的方式理解正則表示式

}
#re.match() :掃描整個字串從起始位置匹配一個模式如果起始位置沒有或者非起始位置起始返回None

# 需求:判斷"www.baidu.com"是否已"www"開頭
var =  re.match("www","baidu.com.www")
print(var)
結果:None

#re.search():掃描整個字串,返回第一個匹配成功的模式

val= re.search("www","Hello,welcome visit www.baidu.com,www")
print(val)
結果:<re.Match object; span=(20, 23), match='www'>

#re.findall():掃描整個字串匹配所有的模式,並返回結果列表
引數:

value = re.findall("www","Hello,welcome visit www.baidu.com,www")
print(value)
結果:['www', 'www']

#正則表示式的元字元
(1)匹配單個字元與數字
“.” : 匹配除換行符外的任意字元

str = "Hello,I am coming"
var =re.match(".",str)
print(var)
結果:<re.Match object; span=(0, 1), match='H'>
value = re.search(".",str)
print(value)
結果:<re.Search object; span=(0, 1), match='H'>
val = re.findall(".",str)     #返回結果列表
print(val)
結果:['H', 'e', 'l', 'l', 'o', ',', 'I', ' ', 'a', 'm', ' ', 'c', 'o', 'm', 'i', 'n', 'g']

[]: 表示匹配所包含的任意字元
[a-z],[A-Z],[0-9],[0-9a-zA-Z]
^脫字元
[^Hello] :除了Hello的所有字元 [^0-9]
\d 同 [0-9]
\D 同 [^0-9]
\w [0-9a-zA-Z_]
\W [^0-9a-zA-Z_]

str = "Hello,I am coming"
val = re.findall("[^Hello]",str)
print(val)
結果:[',', 'I', ' ', 'a', 'm', ' ', 'c', 'm', 'i', 'n', 'g'] #注意空格

\s 任意空白符 (\n \t …) 同 [ \f\n\r\t]

str = "Hello,I am coming"   #注意空格的位置
val = re.findall("\s",str)
print(val)
結果:[' ', ' ']

\S 非空白符

str = "Hello,I am coming"
val = re.findall("\S",str)
print(val)
結果:['H', 'e', 'l', 'l', 'o', ',', 'I', 'a', 'm', 'c', 'o', 'm', 'i', 'n', 'g']