>>
> 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...