python正則表達(dá)式

正則表達(dá)式

\d匹配一個數(shù)字

\w匹配一個字母或數(shù)字

\s匹配一個空格(包括tab等空白符)

\s+匹配至少一個空格

.匹配任意字符

*匹配任意個字符(包括0個)

+匹配至少一個字符

?匹配0個或者1個字符

{n}匹配n個字符

{n,m}匹配n-m個字符

A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。

^表示行的開頭, ^\d表示必須以數(shù)字開頭

$表示行的結(jié)束,\d$表示必須以數(shù)字結(jié)束

^py$整行只能匹配py

[0-9a-zA-Z_]可以匹配一個數(shù)字、字母或者下劃線

[0-9a-zA-Z_]+

[a-zA-Z_][0-9a-zA-Z_]*

[a-zA-Z_][0-9a-zA-Z_]{0, 19}


re模塊

  1. match()方法判斷是否匹配,成功返回Match對象,失敗返回None

re.match(pattern, string, flags)

第一個參數(shù)為正則表達(dá)式

第二個參數(shù)為要匹配的字符串

第三個參數(shù)為標(biāo)志位,匹配方式(是否區(qū)分大小寫,多行匹配等)

import re

re.match(r'^\d{3}-\d{3,8}$', '010-12345')

<_sre.SRE_Match object; span=(0, 9), match='010-12345'>

  1. split()正則表達(dá)式切分字符串

re.split(r'\s+', 'a b c')

['a', 'b', 'c']

re.split(r'[\s,]+', 'a,b, c d')

['a', 'b', 'c', 'd']

re.split(r'[\s,;]+', 'a,b;; c d')

['a', 'b', 'c', 'd']

  1. group()分組提取

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')

m.group(0)

'010-12345'

m.group(1)

'010'

m.group(2)

'12345'

t = '19:05:30'

m = re.match( r'^(0[0-9]|1[0-9]|2[0-3]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)

print(m)

print(m.groups())

<_sre.SRE_Match object; span=(0, 8), match='19:05:30'>

('19', '05', '30')

  1. 正則表達(dá)式默認(rèn)貪婪匹配

貪婪匹配

re.match(r'^(\d+)(0*)$', '102300').groups()

('102300', '')

非貪婪匹配(盡可能少匹配)加?

re.match(r'^(\d+==?==)(0*)$', '102300').groups()

('1023', '00')

  1. compile()預(yù)編譯,把正則表達(dá)式編譯成一個正則表達(dá)式對象

import re

# 編譯:

re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')

# 使用

re_telephone.match('010-12345').groups()

('010', '12345')

re_telephone.match('010-8086').groups()

('010', '8086')

  1. findall()獲取字符串中所有匹配的字符串

獲取字符串中包含'oo'的所有單詞

re.findall(r'\woo\w', text)

  1. sub()

re.sub(pattern, repl, string, count)

第二個函數(shù)是替換后的字符串,本例為’-‘

第四個函數(shù)指替換個數(shù),默認(rèn)為0,表示每個匹配項都替換

text = "JGood is a handsome boy, he is cool, clever, and so on..."

print re.sub(r'\s+', '-', text)

將字符串中的空格替換成‘[]’

re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0)

  1. search()

re.search(pattern, string, flags)

匹配直到找到第一個匹配然后返回,如果字符串沒有匹配,則返回None

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • re模塊手冊 本模塊提供了和Perl里的正則表達(dá)式類似的功能,不關(guān)是正則表達(dá)式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,198評論 0 13
  • # 正則表達(dá)式 \d匹配一個數(shù)字 \w匹配一個字母或數(shù)字 \s匹配一個空格(包括tab等空白符) \s+匹配至少一...
    小呀小芒果閱讀 411評論 0 0
  • 此內(nèi)容為個人學(xué)習(xí)用,且大多為轉(zhuǎn)載,特此說明。如果原作者介意的話,請留言,我會盡快刪除。 原文([廖雪峰的官方網(wǎng)站]...
    Druids閱讀 613評論 0 2
  • 本文介紹了Python對于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用示例...
    Python程序媛閱讀 1,450評論 0 22
  • 我們從小接受教育,建構(gòu)起對世界的認(rèn)知。不斷地閱讀和思考,就是要將原有的認(rèn)知解構(gòu)重組。 本文選自《如果這樣,會怎樣》...
    黑天鵝圖書閱讀 726評論 0 1

友情鏈接更多精彩內(nèi)容