match 、 search、findall的區別
match從字串的開頭開始匹配,如果開頭沒有匹配到,search是從字串任意位置開始匹配。
上面兩個都是匹配到乙個就停止匹配。findall是返回所有能匹配上的字串列表
re.match
re1str=result1 = re.match(,str)
result1.group()
2
3
python re_test.py
<_sre.sre_match object at 0x10584fa58>
123
開頭匹配不到則返回none
re1str=result1 = re.match(,str)
result1
2
python re_test.py
none
re.search
匹配到一次就停止
re1str=result2 = re.search(, str)
result2
result2.group()
2
3
python re_test.py
<_sre.sre_match object at 0x108475a58>
123
re.findall
findall返回的是列表
re1str=result3 = re.findall(,str)
result3
2
python re_test.py
[
'123'
,
'123123'
]
匹配不到則返回空列表
re1str=result3 = re.findall(,str)
result3
2
python re_test.py
re.compile
可以把正規表示式編譯成乙個正規表示式物件。可以把那些經常使用的正規表示式編譯成正規表示式物件,這樣可以提高一定的效率。下面是乙個正規表示式物件的乙個例子:
text = regx = re.compile() regx.findall(text)
python re_test.py['jgood', 'cool']
group和groups的區別
先看乙個示例
reresult = re.search(,)
result.group()
result.groups()
python re_test.py從上面的示例可以看出group會返回到正規表示式中所有的符合規則的內容,而groups只會返回分組(即括號括起來的為一組)中的內容。123asdf234
('123', '234')
正規表示式常用格式:
字元:\d:表示數字
\w:字母、數字、下劃線、中橫線
\t:製表符
.:除了回車以外的所有字元
次數:*:匹配前面的字元0次或者多次 相當於》=0
+:匹配前面的字元1次或者多次 相當於》=1
?:匹配前面的字元0次或者1次
:匹配前面的字元m次
:匹配前面的字元至少m次,至多n次
正規表示式匹配ip位址
最簡單的方法:
ip= = re.findall(,ip)1
2
python re_test.py
[
'192.168.1.200'
]
改進後的方法:
ip=result=re.findall('(?:\d\.)\d',ip)思路:第一種方法中,"[0-9]\."出現了三次,所以我們把這一串字元當做乙個整體匹配3次即可result
(?:pattern) :表示非獲取匹配,
匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元「(|)」來組合乙個模式的各個部分是很有用。例如「industr(?:y|ies)」就是乙個比「industry|industries」更簡略的表示式
pyhthon 正規表示式
1 正規表示式中r 匹配規則 print m.group 預設匹配字元 he m re.match r zheng zhengdongxu print m.group 預設匹配字元 zheng m re.match r zheng zhengdongxuzhengwuzhengsa print m....
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...