拓展 正規表示式 初識

2022-07-19 08:30:41 字數 3338 閱讀 5199

正規表示式(re)是一種小型的高度專業化的程式語言,(在python中)它內嵌在python中,並通過re模組實現。

其作用:

1.可以為想要匹配的相應字串集指定規則

2.該字串集可能包含英文語句、email位址、命令或者任何你想搞定的東西

3.可以問諸如「這個字串匹配該模式嗎?」

4「在這個字串中是否有部分匹配該模式呢?」

5.你也可以使用re以各種方式來修改或分割字串

正規表示式是一門獨立的語言,並不是python中特有的。正規表示式模式被編譯成一系列的位元組碼,然後由用c編寫的匹配引擎執行。

(並非所有字串處理都能用正規表示式完成) 

字元匹配:

普通字元:

大多數字字母和字元一般都會和自身匹配

如正規表示式test會和字串「test」完全匹配

元字元

. ^ $ * + ? {} \ | ()

方括號

常用來指定乙個字符集:[abc];[a-z]

元字元在字符集中不起作用:[akm$]

補集匹配不在區間範圍內的字元:[^5]

這是最原始的 通過普通字元去匹配它自身

>>> import

re>>> s = '

abc'

>>>

>>> s = r'

abc'

>>>

>>> re.findall(s,'

aaaaaaaaaads sscabc')

['abc'

]>>> re.findall(s,'

aaaaaaaaaads sscab')

>>> re.findall(s,'

aaabcaaaabcaaads sscab')

['abc', '

abc'

]>>>

有些時候規則有些變化

>>> st = '

top tip tqp twp tep'#

定義乙個字串

>>>

>>> res = r'

top'

#定義乙個正規表示式

>>>

>>> re.findall(res,st) #

在字串裡匹配

['top']

>>> res = r'

tip'

>>>re.findall(res,st)['

tip'

]>>> res = r'

t[io]p'#

如果要匹配tip和top,那麼用方括號

>>>

>>>re.findall(res,st)['

top', '

tip'

]>>> res = r'

t[^io]p'#

如果要匹配除了tip和top之外的區間,那麼使用[^io]

>>>re.findall(res,st)['

tqp', '

twp', '

tep'

]>>>

^

匹配行首。除非設定multiline標誌,它只是匹配字串的開始。在multiline模式裡,它也可以直接匹配字串中的每個換行。

>>> import

re>>> s = '

hello world,hello boy

' >>> r = r'

hello

'>>>re.findall(r,s)['

hello

', '

hello']

>>> r = r'

^hello

'>>>re.findall(r,s)['

hello']

>>> s = '

world,hello boy

'>>>re.findall(r,s)

>>> r = r'

^world

'>>>re.findall(r,s)['

world']

>>>

$

匹配行尾,行尾被定義為要麼是字串尾,要麼是乙個換行字元後面的任何位置。

>>> s = '

world,hello boy

'>>> r = r'

boy$

'>>>re.findall(r,s)['

boy'

]>>>

綜合示例:

>>> import

re>>>

>>> r = '

t[abc$]

'>>>

>>> re.findall(r,'ta'

)['ta

']>>> re.findall(r,'tb'

)['tb

']>>> re.findall(r,'

tax')[

'ta']

>>> re.findall(r,'

t$') #

這裡$符號作為乙個普通的字元輸出

['t$']

>>> r = '

t[abc^]'#

這裡^符號也是作為乙個普通的字元輸出。如果放在開頭如't[^abc]'那就是取匹配區間外的字串了

>>> re.findall(r,'t^'

) ['t^

']>>>

>>> r = r'

x[0123456789]x'#

可以寫成x[0-9]x

>>>

>>> re.findall(r,'

x1x')[

'x1x']

>>> re.findall(r,'

x1x,x2x')

['x1x', '

x2x'

]>>> re.findall(r,'

x1x,x2x,x9x')

['x1x', '

x2x', '

x9x'

]>>> r = r'

x[0-9]x

'>>> re.findall(r,'

x1x,x2x,x9x')

['x1x', '

x2x', '

x9x'

]>>> r = r'

x[a-za-z0-9]x'#

同理,匹配乙個比較大的範圍,用-號

>>> re.findall(r,'

x1x,xrx,xgx')

['x1x', '

xrx', '

xgx'

]>>>

正規表示式 1 初識正規表示式

簡單地說,正規表示式就是一套處理字串的規則和方法,以行為單位對字串進行處理,通過特殊的符號的輔助,我們可以快速的過濾,替換某些特定的字串。運維工作中,會有大量訪問日誌,錯誤日誌,大資料。如何能夠快速的過濾出我們需要的內容,這就需要正規表示式。awk,sed,grep egrep 三劍客要想能工作的更...

正規表示式初識

用來指定乙個字元集合 字元直接是 或 的關係,不是乙個特定的字串,跟 abc 不同 abc a z 在字符集中,元字元 不起作用 abc abc 元字元 在字串尾不起作用 abc 就是普通字元。元字元在字符集首表示匹配補集,abc 就是匹配除了a,b,c以外的字元。匹配行首,位於字串首。制定規則re...

正規表示式初識

正規表示式 為轉義如 表示.郵箱匹配 grep e 0 9a za z 0 9a za z a za z a.txt 查詢郵箱 a z 所有小寫字母 a z 所有大寫字母 0 9 所有數字 0 9 所有非數字 表達取反 0 9 a z 0個或多個小寫字母 a z 至少出現一次小寫字母 a z 出現0...