正則表達(dá)式

正則表達(dá)式

正則表達(dá)式是對字符串操作的一種邏輯公式,就是用實(shí)現(xiàn)定義好的一些特定字符莹菱、及這些特定字符的組合移国,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯道伟。

不是Python所獨(dú)有迹缀,需要通過re模塊加載。
正則表達(dá)式測試網(wǎng)站:開源中國

常用匹配字符:

re.match

re.match嘗試從字符串的起始位置匹配一個(gè)模式蜜徽,如果不是起始位置匹配成功的話祝懂,match()就返回none.

re.match(patter,string,flags=0)

實(shí)例

  • 常規(guī)匹配
import re
content = 'Hello 123 4537 World This is Regex Demo'
print(len(content))
result = re.match('^Hello\s\d\d\d\s\d{4}\s.*Demo$',content)
print(result)
print(result.group()) # 匹配的結(jié)果
print(result.span()) # 匹配字符的長度
  • 泛匹配: .*
import re
content = 'Hello 123 4537 World_This is Regex Demo'
result = re.match('^Hello.*Demo$',content)
print(result)
  • 匹配目標(biāo):小括號,然后用goup(1),group(2)
import re
content = 'Hello 1234537 World_This is Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld.*Demo$',content)
print(result.group(1))
  • 貪婪匹配:匹配盡可能多的字符
import re
content = 'Hello 1234537 World_This is Regex Demo'
result = re.match('^He.*(\d+).*Demo$',content)
#這里小括號內(nèi)只會匹配到7
  • 非貪婪匹配
import re
content = 'Hello 1234537 World_This is Regex Demo'
result = re.match('He.*?(\d+).*Demo$',content)
# 這里會匹配完整的數(shù)字
  • 匹配模式
import re
content = ''''''Hello 1234537 World_This
is Regex Demo''''''
result1 = re.match('He.*?(\d+).*Demo$',content)
result2 = re.match('He.*?(\d+).*Demo$',content,re.S)
  • 轉(zhuǎn)義字符 ""
import re
content="This is $5.00"
result1 = re.match("This is $5.00",content)
result2 = re.match("This is \$5\.00)

小結(jié):盡量使用泛匹配拘鞋,使用括號得到匹配目標(biāo)砚蓬,盡量使用非貪婪模式,有換行符就用re.S,有特殊字符用轉(zhuǎn)義

re.search

re.search掃描整個(gè)字符串并返回第一個(gè)成功的匹配

import re
content = "Extra strings Hello 1234657 World_This is a Regex Demo Extra strings"
result_re_match = re.match("He.*?(\d+).*Demo$",conent)
resutl_re_search = re.search("He.*?(\d+).*Demo$",content)

小結(jié):為方便匹配盆色,能用search,就不用match

re.findall

搜索字符串灰蛙,以列表形式返回全部匹配的子串。

小括號既可以作為整體隔躲,又可以作為分組摩梧。

re.sub

替換字符串中每一個(gè)匹配的子串后返回替換后的字符串。

import re
content = "Extra strings Hello 1234657 World_This is a Regex Demo Extra strings"
# 替換
content1 = re.sub('\d+','',content)
content2 = re.sub('\d+','Replacement',content)
# 增加內(nèi)容
content3 = re.sub('(\d+),r'\1 8910',content)

可以采用sub先進(jìn)行替換宣旱,然后再用findall仅父。
ps:使用strip()方法去除空格

re.compile

將正則表達(dá)式編譯成正則表達(dá)式對象,以便復(fù)用匹配模式浑吟。

import re
content = '''Hello 1234567 World_This
is a Regex Demo'''
pattern = re.compile("Hello.*Demo',re.S)
result = re.match(pattern,content)
print(result)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笙纤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子组力,更是在濱河造成了極大的恐慌粪糙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿项,死亡現(xiàn)場離奇詭異蓉冈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)轩触,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門寞酿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脱柱,你說我怎么就攤上這事伐弹。” “怎么了榨为?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵惨好,是天一觀的道長煌茴。 經(jīng)常有香客問我,道長日川,這世上最難降的妖魔是什么蔓腐? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮龄句,結(jié)果婚禮上回论,老公的妹妹穿的比我還像新娘。我一直安慰自己分歇,他們只是感情好傀蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著职抡,像睡著了一般葬燎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缚甩,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天萨蚕,我揣著相機(jī)與錄音,去河邊找鬼蹄胰。 笑死岳遥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的裕寨。 我是一名探鬼主播浩蓉,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宾袜!你這毒婦竟也來了捻艳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤庆猫,失蹤者是張志新(化名)和其女友劉穎认轨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體月培,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘁字,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杉畜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纪蜒。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖此叠,靈堂內(nèi)的尸體忽然破棺而出纯续,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布猬错,位于F島的核電站窗看,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏倦炒。R本人自食惡果不足惜显沈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望析校。 院中可真熱鬧,春花似錦铜涉、人聲如沸智玻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吊奢。三九已至,卻和暖如春纹烹,著一層夾襖步出監(jiān)牢的瞬間页滚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工铺呵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹驰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓片挂,卻偏偏與公主長得像幻林,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子音念,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • re模塊手冊 本模塊提供了和Perl里的正則表達(dá)式類似的功能沪饺,不關(guān)是正則表達(dá)式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,010評論 0 13
  • 1.正則表達(dá)式概述 正則表達(dá)式闷愤,又稱正規(guī)表示式整葡、正規(guī)表示法、正規(guī)表達(dá)式讥脐、規(guī)則表達(dá)式遭居、常規(guī)表示法(英語:Regula...
    TENG書閱讀 844評論 0 1
  • 本文介紹了Python對于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用示例...
    Python程序媛閱讀 1,349評論 0 22
  • 月光透過稀疏的樹葉斑駁的灑在床前旬渠,調(diào)皮的隨著風(fēng)兒波動魏滚,似乎在我的床上捉迷藏。夜坟漱,很靜鼠次。。靜得能聽到枕邊人均勻的呼吸...
    爬上屋頂看星星閱讀 863評論 6 50
  • 白色的燈光下,我坐在桌子跟前腥寇,翻看著一個(gè)叫朋友圈的東西成翩,我老了,我想赦役,已經(jīng)不懂得年輕人在想些什么麻敌。 今天,又和兒子...
    翩翩小念閱讀 440評論 0 0