国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 正則表達(dá)式的高級(jí)用法

2019-11-25 16:28:27
字體:
供稿:網(wǎng)友

對(duì)于Python來說,學(xué)習(xí)正則就要學(xué)習(xí)模塊re的使用方法。本文將展示一些大家都應(yīng)該掌握的高級(jí)技巧。

編譯正則對(duì)象

re.compile函數(shù)根據(jù)一個(gè)模式字符串和可選的標(biāo)志參數(shù)生成一個(gè)正則表達(dá)式對(duì)象。該對(duì)象擁有一系列方法用于正則表達(dá)式匹配和替換。用法上略有區(qū)別,舉個(gè)例子, 匹配一個(gè)字符串可用如下方式:

如果使用compile,將變成:

為什么要這么用呢?其實(shí)就是為了提高正則匹配的速度,重復(fù)利用正則表達(dá)式對(duì)象。我們對(duì)比一下2種方式的效率:

可以看到第二種方式要快很多。在實(shí)際的工作中你會(huì)發(fā)現(xiàn)越多的使用編譯好的正則表達(dá)式對(duì)象,效果就越好。

分組(group)

你可能已經(jīng)見過對(duì)匹配的內(nèi)容進(jìn)行分組的用法了:

通過對(duì)要匹配的對(duì)象添加括號(hào),就可以精確的對(duì)應(yīng)符合的結(jié)果了。我們還可以進(jìn)行嵌套的分組:

分組可以滿足需求,但是有時(shí)候可讀性很差,那可以對(duì)分組進(jìn)行命名:

現(xiàn)在可讀性就非常高了。

字符串匹配

學(xué)過sed的同學(xué)可能見過如下替換用法:

這個(gè)/1表示前面正則匹配到的結(jié)果。上面的sed也就是給匹配到的結(jié)果加上中括號(hào)。

在re模塊中也存在這樣的用法:

用命名分組也是可以的:

附近匹配(Look around)

re模塊也支持附近匹配,看看例子就懂了:

正則匹配的時(shí)候使用函數(shù)

之前我們看到的大部分內(nèi)容都是匹配的是一個(gè)表達(dá)式,但是有時(shí)候需求要復(fù)雜得多,尤其是在替換的時(shí)候。

舉個(gè)例子,通過Slack的API能獲取聊天記錄,比如下面這句:

其中<@U1EAT8MG9>和<@U0K1MF23Z>是2個(gè)真實(shí)的用戶,但是被Slack封裝了,需要通過其他接口獲取這個(gè)對(duì)應(yīng)關(guān)系,

其結(jié)果類似這樣:

在解析對(duì)應(yīng)關(guān)系之后,還希望吧尖括號(hào)也去掉,替換后的結(jié)果是「@xiaoming, @laolin 嗯 確實(shí)是這樣的 」

用正則怎么實(shí)現(xiàn)呢?

所以pattern當(dāng)然也可以是一個(gè)函數(shù)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 郸城县| 达州市| 监利县| 双城市| 隆化县| 永登县| 新沂市| 田阳县| 竹北市| 四子王旗| 三江| 临沂市| 库尔勒市| 鄂伦春自治旗| 尚义县| 油尖旺区| 胶州市| 德州市| 天镇县| 湾仔区| 绵竹市| 甘肃省| 万载县| 呼和浩特市| 含山县| 凌源市| 当阳市| 富民县| 晴隆县| 南乐县| 揭西县| 奉节县| 乐清市| 洛阳市| 澄江县| 宣城市| 吉安市| 怀化市| 新乡市| 宜兴市| 吴川市|