Python學習隨筆 正規表示式

2021-08-17 19:18:24 字數 2012 閱讀 8583

要做更精確的匹配,可以用* [ ] *表示範圍

eg:

[0-9a-za-z_]可以匹配乙個數字,字母或者下劃線

[0-9a-za-z_]+可以匹配至少由乙個數字,字母或下劃線組成的字串

python提供re模組,包含所有正規表示式的功能。由於python的字串本身也用\轉義,所以建議使用r字首,這樣就不用考慮轉義的問題。

match()方法判斷是否匹配,如果匹配成功,返回乙個match物件,否則返回none。用法如下:

import re

if re.match(r'正規表示式',字串):

print('ok')

else:

print('failed')

用正規表示式切分字串比用固定的字元更靈活,尤其是切分不規則的字串。

eg:

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

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

正規表示式還有提取子串的功能。用()表示的就是喲啊提取的分組。

eg:^(\d)-(\d)$分別定義了兩個組,可以直接從匹配的字串中提取出區號和本地號碼。

>>>m = re.match(r'^(\d)-(\d)$','010-12345')

>>>m

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

>>>m.groups()

('010','12345')

>>>m.group(0)

'010-12345'

>>>m.group(1)

'010'

>>>m.group(2)

'12345'

如果正規表示式中定義了組,就可以在match物件上用group()方法提取出子串,group(0)永遠是原始字串,group(1),group(2)…表示第1,2,…個子串。

正則匹配預設是貪婪匹配,也就是匹配盡可能多的字元。

eg:匹配出數字後面的0:

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

('102300','')

由於\d+採用貪婪匹配,直接把後面的0全部匹配了,結果0*只能匹配空字串。

必須讓\d+採用非貪婪匹配(也就是盡可能少匹配),才能把後面的0匹配出來,加個?就可以讓\d+採用非貪婪匹配:

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

('1023','00')

當我們在python中使用正規表示式,re模組內部會做兩件事:

1.編譯正規表示式,如果正規表示式的字串本身不合法,會報錯;

2.用編譯後的正規表示式去匹配字串。

多次使用乙個正規表示式時,可以預編譯:

>>>import re

#編譯re_t = re.compile(r'^(\d)-(\d)$')

#使用》re_t.match('010-12345').groups()

('010','12345')

正規表示式隨筆

所謂正規表示式其實就是用一串模版字串去匹配目標字串。1.新增引用using system.text.regularexpressions 如下 textbox txt new textbox txt.textchanged sender,e if regex.ismatch txt.text,150...

正規表示式隨筆

匹配任何單個字元。例如正規表示式 b.g 能匹配如下字串 big bug b g 但是不匹配 buug b.g 可以匹配 buug 匹配括號中的任何乙個字元。例如正規表示式 b aui g 匹配bug big和bag,但是不匹配beg baug。可以在括號中使用連字元 來指定字元的區間來簡化表示,例...

PHP 正規表示式隨筆

正規表示式 正則用來查詢指定的字串 匹配 替換指定的字串 1 什麼是正規表示式 正規表示式是一組描述字串特徵的模式,用於匹配一組字串。這種模式本身也是字串只不過有一些規則和語法。2 正規表示式用來解決字串的搜尋 替換 分隔 3 在php中學習正規表示式學習什麼?正規表示式的寫法。正規表示式的處理函式...