Python學習之旅(二十五)

finsom發表於2018-12-06

Python基礎知識(24):正規表示式

正規表示式:檢查一個字串是否與某個模式匹配

d :匹配數字

w :匹配字母或數字

. :匹配任意字元

{n} :匹配n個字元

{m,n} :匹配m到n個字元

s :匹配空格

a|b :匹配a或b

^ :匹配字串開頭

$ :匹配字串結尾

* :匹配0個或多個

+ :匹配1個或多個

? :匹配0個或1個

[abc] :匹配a、b或c

[^abc] :匹配除了a、b、c以外的

re模組:包含正規表示式的所有功能

建議使用Python的r字首,如r‘d’

由於Python的字串本身也用轉義,所以要特別注意

1、match:匹配字串

import re
m
= re.match(r`d{3}-d{3,8}`,r`010-23456`) print(m)

結果:
<_sre.SRE_Match object; span=(0, 9), match=`010-23456`>

2、search:掃描

import re

s = re.search(r`(.com)`,r`someone@gmail.com`)
print(s)

結果:
<_sre.SRE_Match object; span=(13, 17), match=`.com`>

3、split:切分字元

import re

s = re.split(r`[,]`,r`hello,world`)
print(s)

結果:
[`hello`, `world`]

4、sub:替換

import re

sen = `Hello2018, 12world06.`
sen1 = re.sub(r`d`, ``, sen)
print(sen1)

結果:
Hello, world.

5、group:分組

import re

sen = re.match(r`^(d{3})-(d{3,8})$`, `010-23456`)
print(sen.group(0))
print(sen.group(1))
print(sen.group(2))

結果:
010-23456
010
23456

 

驗證Email地址的正規表示式

#驗證Email地址的正規表示式
import re

sen1 = r`someone@gmail.com`
sen2 = r`bill.gates@microsoft.com`
sen3 = r`bob#example.com`
sen4 = r`mr-bob@example.com`
m = r`[w.]+@[w]+.(com)`
print(re.match(m,sen1))
print(re.match(m,sen2))
print(re.match(m,sen3))
print(re.match(m,sen4))

結果:
<_sre.SRE_Match object; span=(0, 17), match=`someone@gmail.com`>
<_sre.SRE_Match object; span=(0, 24), match=`bill.gates@microsoft.com`>
None
None

 

 

 

 

資料來源:

1、廖雪峰官網:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000

2、菜鳥教程:http://www.runoob.com/python3/python3-reg-expressions.html

 

相關文章