python高階07 正規表示式

2021-10-04 21:22:00 字數 3631 閱讀 6623

>>

> import re

>>

>

dir(re)

['a'

,'ascii'

,'debug'

,'dotall'

,'i'

,'ignorecase'

,'l'

,'locale'

,'m'

,'multiline'

,'regexflag'

,'s'

,'scanner'

,'t'

,'template'

,'u'

,'unicode'

,'verbose'

,'x'

,'_maxcache'

,'__all__'

,'__builtins__'

,'__cached__'

,'__doc__'

,'__file__'

,'__loader__'

,'__name__'

,'__package__'

,'__spec__'

,'__version__'

,'_alphanum_bytes'

,'_alphanum_str'

,'_cache'

,'_compile'

,'_compile_repl'

,'_expand'

,'_locale'

,'_pattern_type'

,'_pickle'

,'_subx'

,'compile'

,'copyreg'

,'enum'

,'error'

,'escape'

,'findall'

,'finditer'

,'fullmatch'

,'functools'

,'match'

,'purge'

,'search'

,'split'

,'sre_compile'

,'sre_parse'

,'sub'

,'subn'

,'template'

]

字 符

描述元字元:

\d . \w \s ^ $

\d匹配數字(digest)

.匹配任意符號中文也可以,除了\n

\w匹配所有有效符號(大小寫字母,數字,下劃線,各國的語言符號)

\s匹配空白位(空格,\t)

^以什麼開頭

$以什麼結尾

表示列舉,括號裡的某乙個([0123456789],[a-z],[a-z],[a-za-z0-9_],[\u4e00-\u9fa5]-漢字)

反義符:

\d \w \s [^]

\d匹配非數字

\w匹配非有效符號,也就是特殊符號

\s非空白位

[^]列舉反義 注意^ 和 [^] >>> re.findall(「1[^356789]\d」,「13991039425」) 結果:

轉義符在python中\具有轉義的含義,如要正常表示乙個\,則需要兩個\\。建議大家以後在寫正則的時候,一定要在正規表示式前面加上r。

>>

> re.

match

("c:\\\\a\\\\b\\\\c"

,"c:\\a\\b\\c"

) #\\兩次轉義,一次字串,一次正規表示式

<_sre.sre_match object; span=(0

,8), match=

'c:\\a\\b\\c'

>

>>

> re.

match

(r"c:\\a\\b\\c"

,"c:\\a\\b\\c"

)<_sre.sre_match object; span=(0

,8), match=

'c:\\a\\b\\c'

>

位數

* + ?

*(位數)任意多個(0個1個多個)

+(位數)任意多個(至少有一位)

?0位或一位

有n位 eg: 表示有3位

至少n位

n-m區間範圍

分組(group)

在正規表示式中,使用圓括號()將正則包裹起來,會形成正則匹配後的二次篩選。分組最好的好處就是能夠形成二次篩選

貪婪模式與懶惰模式

貪婪模式和非貪婪(懶惰)模式:在python中,預設是貪婪模式在.*+?後面加上?,可以將貪婪模式轉換成費貪婪模式

>>

> s=""

>>

> re.

sub(r"",""

,s)'哈哈1哈哈2'

>>

> re.

findall

(r"<\w+>(.*)"

,s)[

"">哈哈1

<

/a>

<

/li>

"">哈哈2

<

/a>

<

/li>

<

/ul>

] #貪婪模式

>>

> re.

findall

(r"<\w+>(.*?)"

,s)[哈哈1

,哈哈2

] #將貪婪模式轉換成非貪婪

>>

> re.

match

(r"<(\w+)>.*"

,"這是乙個連線標籤"

)<_sre.sre_match object; span=(0

,15), match=

'這是乙個連線標籤'

>

使用者名稱

^[a-z0-9_-]$

密碼^[a-z0-9_-]$

十六進製制值

^#?([a-f0-9]|[a-f0-9])$

電子郵箱

^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.])$ 或 ^[a-z\d]+(.[a-z\d]+)*@(\da-z?)+(.[a-z]+)+$

ip 位址

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?)

html 標籤

^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$

刪除**\注釋

(?unicode編碼中的漢字範圍

^[\u4e00-\u9fa5]+$

方法:

match("要匹配的","待匹配的") #表示從頭匹配,返回的是乙個物件,提取用group()函式

findall() #返回的是乙個列表、

sub()

search()

split() #分割字串

python程式設計07 正規表示式

本文介紹了python對於正規表示式的支援,包括正規表示式基礎以及python正規表示式標準庫的完整介紹及使用示例。本文的內容不包括如何編寫高效的正規表示式 如何優化正規表示式,這些主題請檢視其他教程。正規表示式運用 pattern類工廠方法 import re pattern re.compile...

正規表示式高階

或 的小細節 替換匹配 任一側最大的表示式 2.正規表示式和相應編碼 3.正規表示式引擎 舉例簡單說明nfa與dfa工作的區別 比如有字串this is yansen s blog,正規表示式為 ya msen nsen nsem 不要在乎表示式怎麼樣,這裡只是為了說明引擎間的工作區別 nfa工作方...

正規表示式高階

捕獲組就是把正規表示式中子表示式匹配的內容,儲存到記憶體中以數字編號或手動命名的組裡,以供後面引用。表示式 說明 expression 普通捕獲組,將子表示式expression匹配的內容儲存到以數字編號的組裡 expression 命名捕獲組,將子表示式expression匹配的內容儲存到以nam...