正則表達(dá)式,又稱規(guī)則表達(dá)式(Regular Expression),是使用單個字符串來描述、匹配某個句法規(guī)則的字符串,常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。
簡單來說,正則表達(dá)式就是使用:字符串定義規(guī)則,并通過規(guī)則去驗(yàn)證字符串是否匹配。
比如,驗(yàn)證一個字符串是否是符合條件的電子郵箱地址,只需要配置好正則規(guī)則,即可匹配任意郵箱。
比如通過正則規(guī)則: (^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$) ?即可匹配一個字符串是否是標(biāo)準(zhǔn)郵箱格式
但如果不使用正則,使用if else來對字符串做判斷就非常困難了。
正則的三個基礎(chǔ)方法
Python正則表達(dá)式,使用re模塊,并基于re模塊中三個基礎(chǔ)方法來做正則匹配。
分別是:match、search、findall 三個基礎(chǔ)方法
re.match(匹配規(guī)則, 被匹配字符串)
從被匹配字符串開頭進(jìn)行匹配, 匹配成功返回匹配對象(包含匹配的信息),匹配不成功返回空。
?
re.search(匹配規(guī)則, 被匹配字符串)
搜索整個字符串,找出匹配的。從前向后,找到第一個后,就停止,不會繼續(xù)向后
整個字符串都找不到,返回None
re.findall(匹配規(guī)則, 被匹配字符串)
匹配整個字符串,找出全部匹配項(xiàng)
找不到返回空list: []
?元字符匹配
正則最強(qiáng)大的功能在于元字符匹配規(guī)則。 單字符匹配:
字符 | 功能 |
. | 匹配任意1個字符 (除了\n),\.? 匹配點(diǎn)本身 |
[ ] | 匹配[ ]中列舉的字符 |
\d | 匹配數(shù)字,即0 - 9 |
\D | 匹配非數(shù)字 |
\s | 匹配空白,即空格、tab鍵 |
\S | 匹配非空白 |
\w | 匹配單詞字符,即a-z、A-Z、0-9、 |
\W | 匹配非單詞字符 |
示例:
字符串 s = “itheima1 @@python2 !!666 ##itcast3”
- 找出全部數(shù)字: re.findall(r‘\d’, s)
字符串的r標(biāo)記,表示當(dāng)前字符串是原始字符串,即內(nèi)部的轉(zhuǎn)義字符無效而是普通字符
- 找出特殊字符:
re.findall(r‘\W’, s)
- 找出全部英文字母:
re.findall(r’[a-zA-Z]’, s)
[]內(nèi)可以寫:[a-zA-Z0-9] 這三種范圍組合或指定單個字符如
[aceDFG135]
字符 | 功能 |
* | 匹配前一個規(guī)則的字符出現(xiàn)0至無數(shù)次 |
+ | 匹配前一個規(guī)則的字符出現(xiàn)1至無數(shù)次 |
? | 匹配前一個規(guī)則的字符出現(xiàn)0次或無數(shù)次 |
{m} | 匹配前一個規(guī)則的字符出現(xiàn)m次 |
{m,} | 匹配前一個規(guī)則的字符出現(xiàn)最少m次 |
{m,n} | 匹配前一個規(guī)則的字符出現(xiàn)m到n次 |
字符 | 功能 |
^ | 匹配字符串開頭 |
$ | 匹配字符串結(jié)尾 |
\b | 匹配一個單詞的邊界 |
\B | 匹配非單詞邊界 |
字符 | 功能 |
| | 匹配左右任意一個表達(dá)式 |
() | 在括號中字符作為一個分組 |
案例
- 匹配賬號,只能由字母和數(shù)字組成,長度限制6到10位
規(guī)則為: ^[0-9a-zA-Z]{6, 10}$
- 匹配QQ號,要求純數(shù)字,長度5-11,第一位不為0
規(guī)則為:^[1-9][0-9]{4, 10}&
[1-9]匹配第一位,[0-9]匹配后面4到10位
- 匹配郵箱地址,只允許qq、163、gmail這三種郵箱地址
規(guī)則為:^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+&
- [\w-]+ 表示出現(xiàn)a-z A-Z 0-9 _ 和 - 字符最少一個,最多不限
- (\.[\w-]+)*,表示出現(xiàn)組合 . 和 a-z A-Z 0-9 _ ?-的組合最少0次,最多不限
用于匹配:abc.ced.efg@123.com中的ced.efg這部分
- @表示匹配@符號
- (qq|163|gmail)表示只匹配這3個郵箱提供商
- (\.[\w-]+)+表示a-z A-Z 0-9 _ ?-的組合最少1次,最多不限
用于匹配abc.ced.efg@123.com.cn中的.com.cn這種
最后使用+表示最少一次,即比如:.com文章來源:http://www.zghlxwxcb.cn/news/detail-629333.html
多了可以是:.com.cn.eu這樣文章來源地址http://www.zghlxwxcb.cn/news/detail-629333.html
到了這里,關(guān)于Python高階技巧 正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!