Python正則表達(dá)式之re.match()

我們?cè)诿鎸?duì)生物數(shù)據(jù)语泽,比如序列信息(比如堿基序列畏陕、氨基酸序列等)的時(shí)候岛琼, 會(huì)時(shí)常要問(wèn)底循,這其中是否包含著且含有多少某種已知的模式,一段DNA中是否包含轉(zhuǎn)錄起始特征TATA box槐瑞、一段RNA中是否包含某種lncRNA熙涤、一段肽鏈中是否包含鋅指結(jié)構(gòu)等等;另一方面,我們?cè)诓僮鲾?shù)據(jù)時(shí)祠挫,會(huì)時(shí)常遇到諸如把某個(gè)字符(對(duì)象)換成另一種字符(對(duì)象)的替換操作那槽,而其本質(zhì)還是如何搜索符合某種(替換)模式的對(duì)象。

在這些幾乎天天都可以碰到的模式匹配/搜索問(wèn)題中等舔,正則表達(dá)式就是一把解決問(wèn)題的利劍骚灸!
在Python的re模塊中,常用的有四個(gè)方法(match软瞎、search逢唤、findall、finditer)都可以用于匹配字符串涤浇,今天我們先來(lái)了解一下re.match()鳖藕。

re.match()必須從字符串開(kāi)頭匹配!match方法嘗試從字符串的起始位置匹配一個(gè)模式只锭,如果不是起始位置匹配成功的話著恩,match()就返回none。主要參數(shù)如下:

re.match(pattern, string, flags=0)
# pattern     匹配的正則表達(dá)式
# string      要匹配的字符串
# flags       標(biāo)志位蜻展,用于控制正則表達(dá)式的匹配方式喉誊,如:是否區(qū)分大小寫(xiě),多行匹配等等

基礎(chǔ)用法

舉個(gè)栗子來(lái)理解一下它的用法:

import re
print(re.match('dxy', 'dxy.com'))  # 在起始位置匹配
print(re.match('dxy', 'dxy.com').span())  # 在起始位置匹配
print(re.match('dxy', 'www.dxy.com')) # 不在起始位置匹配

運(yùn)行結(jié)果:

<re.Match object; span=(0, 3), match='dxy'>
(0, 3)
None

從例子中我們可以看出纵顾,re.match()方法返回一個(gè)匹配的對(duì)象伍茄,而不是匹配的內(nèi)容。通過(guò)調(diào)用span()可以獲得匹配結(jié)果的位置施逾。而如果從起始位置開(kāi)始沒(méi)有匹配成功敷矫,即便其他部分包含需要匹配的內(nèi)容,re.match()也會(huì)返回None汉额。

分組捕獲

一般一個(gè)小括號(hào)括起來(lái)就是一個(gè)捕獲組曹仗。我們可以使用group()來(lái)提取每組匹配到的字符串。
group()會(huì)返回一個(gè)包含所有小組字符串的元組蠕搜,從 0 到 所含的小組號(hào)怎茫。

  • 0:表示正則表達(dá)式中符合條件的字符串。
  • 1:表示正則表達(dá)式中符合條件的字符串中的第一個(gè)() 中的字符串妓灌。
  • 2:表示正則表達(dá)式中符合條件的字符串中的第二個(gè)() 中的字符串轨蛤。
  • 以此類推....

直接調(diào)用groups()則直接返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)虫埂。
再舉一個(gè)栗子:

import re
msg = 'name:Alice,age:6'

obj = re.match('name:(\w+),age:(\d+)', msg)
print(obj.group(0))    # name:Alice,age:6  原始字符
print(obj.group(1))    # Alice   第一匹配
print(obj.group(2))    # 6
print(obj.groups())    # ('Alice', '6')

運(yùn)行結(jié)果:

name:Alice,age:6
Alice
6
('Alice', '6')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俱萍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子告丢,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岖免,死亡現(xiàn)場(chǎng)離奇詭異岳颇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)颅湘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門话侧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人闯参,你說(shuō)我怎么就攤上這事瞻鹏。” “怎么了鹿寨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵新博,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脚草,道長(zhǎng)赫悄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任馏慨,我火速辦了婚禮埂淮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘写隶。我一直安慰自己倔撞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布慕趴。 她就那樣靜靜地躺著痪蝇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秩贰。 梳的紋絲不亂的頭發(fā)上霹俺,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音毒费,去河邊找鬼丙唧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛觅玻,可吹牛的內(nèi)容都是我干的想际。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼溪厘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胡本!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起畸悬,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤侧甫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體披粟,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咒锻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了守屉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惑艇。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拇泛,靈堂內(nèi)的尸體忽然破棺而出滨巴,到底是詐尸還是另有隱情,我是刑警寧澤俺叭,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布恭取,位于F島的核電站,受9級(jí)特大地震影響绪颖,放射性物質(zhì)發(fā)生泄漏秽荤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一柠横、第九天 我趴在偏房一處隱蔽的房頂上張望窃款。 院中可真熱鬧,春花似錦牍氛、人聲如沸晨继。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)紊扬。三九已至,卻和暖如春唉擂,著一層夾襖步出監(jiān)牢的瞬間餐屎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工玩祟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腹缩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓空扎,卻偏偏與公主長(zhǎng)得像藏鹊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子转锈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359