正規表示式中特殊的符號:
「.」 表任意字元
「^ 」 表string起始
「$」 表string 結束
「*」 「+」 「?」 跟在字元後面表示,0個——多個, 1個——多個, 0個或者1個
*?, +?, ?? 符合條件的情況下,匹配的盡可能少//限制*,+,?匹配的貪婪性
匹配此前的字元,重複m次
m到n次,m,n可以省略
舉個例子 『a.*b』 表示a開始,b結束的任意字串
a 匹配連續5個a
表一系列字元 [abcd] 表a,b,c,d [^a] 表示非a
| a|b 表示a或者b , ab為任意的正規表示式另外|是非貪婪的如果a匹配,則不找b
(…) 這個括號的作用要結合例項才能理解, 用於提取資訊
\d [0-9]
\d 非 \d
\s 表示空字元
\s 非空字元
\w [a-za-z0-9_]
\w 非 \w
一:re的幾個函式
1: compile(pattern, [flags])
根據正規表示式字串 pattern 和可選的flags 生成正規表示式物件
生成正規表示式物件(見二)
其中flags有下面的定義:
i 表示大小寫忽略
l 使一些特殊字符集,依賴於當前環境
m 多行模式 使 ^ $ 匹配除了string開始結束外,還匹配一行的開始和結束
s 「.「 匹配包括『\n』在內的任意字元,否則 . 不包括『\n』
u make \w, \w, \b, \b, \d, \d, \s and \s dependent on the unicode character properties database
x 這個主要是表示,為了寫正規表示式,更可毒,會忽略一些空格和#後面的注釋
其中s比較常用,
應用形式如下
import re
re.compile(……,re.s)
2: match(pattern,string,[,flags])
讓string匹配,pattern,後面分flag同compile的引數一樣
返回matchobject 物件(見三)
3: split( pattern, string[, maxsplit = 0])
用pattern 把string 分開
>>> re.split(』\w+』, 『words, words, words.』)
['words', 'words', 'words', '']
括號『()』在pattern內有特殊作用,請查手冊
4:findall( pattern, string[, flags])
比較常用,
從string內查詢不重疊的符合pattern的表示式,然後返回list列表
5:sub( pattern, repl, string[, count])
repl可以時候字串,也可以式函式
當repl是字串的時候,
就是把string 內符合pattern的子串,用repl替換了
當repl是函式的時候,對每乙個在string內的,不重疊的,匹配pattern
的子串,呼叫repl(substring),然後用返回值替換substring
>>> re.sub(r』def\s+([a-za-z_][a-za-z_0-9]*)\s*\(\s*\):』,
… r』static pyobject*\npy_\1(void)\n』, dashrepl, 『pro—-gram-files』)
『pro–gram files』
二:正規表示式物件 (regular expression objects )
產生方式:通過 re.compile(pattern,[flags])回
match( string[, pos[, endpos]]) ;返回string[pos,endpos]匹配
pattern的matchobject(見三)
split( string[, maxsplit = 0])
findall( string[, pos[, endpos]])
sub( repl, string[, count = 0])
這幾個函式和re模組內的相同,只不過是呼叫形式有點差別
re.幾個函式和正規表示式物件的幾個函式,功能相同,但同一程式如果
多次用的這些函式功能,正規表示式物件的幾個函式效率高些
三:matchobject
通過 re.match(……) 和 re.compile(……).match返回
該物件有如下方法和屬性:
方法:group( [group1, ...])
groups( [default])
groupdict( [default])
start( [group])
end( [group])
說明這幾個函式的最好方法,就是舉個例子
matchobj = re.compile(r」(?p\d+)\.(\d*)」)
m = matchobj.match(』3.14sss』)
#m = re.match(r」(?p\d+)\.(\d*)」, 『3.14sss』)
print m.group()
print m.group(0)
print m.group(1)
print m.group(2)
print m.group(1,2)
print m.group(0,1,2)
print m.groups()
print m.groupdict()
print m.start(2)
print m.string
輸出如下:
3.14
3.14314
(』3′, 『14′)
(』3.14′, 『3′, 『14′)
(』3′, 『14′)
23.14sss
所以group() 和group(0)返回,匹配的整個表示式的字串
另外group(i) 就是正規表示式中用第i個「()」 括起來的匹配內容
(』3.14′, 『3′, 『14′)最能說明問題了。
Python中的Re模組
1.首先,re模組是python自帶的模組,使用import re就可以使用了 2.基礎語法我就不說了。主要進行總結 match,search都是只匹配一次的。匹配到就返回match物件了。後面是否有可以匹配到的是不管的,如果match開頭沒有匹配到,返回none,search在整個字串中麼有匹配到...
python中re模組的使用
res re.match pattern,string,flags 0 字串的開頭是否能匹配正規表示式。返回 sre.sre match物件,如果 不能匹配返回none。如果匹配的話,res.string可以獲得原始的字串,並不是匹配的字串 re.sub pattern,repl,string,co...
python模組 re模組
匹配任意字元 匹配指定字元類別 字元開頭 字元結尾 取非字元 重複多次字元 0次或多次 重複多次字元 1次或多次 重複單次字元 左右表示式任意匹配 重複m到n次字元 重複m次字元 d 匹配任何十進位制數,相當於 0 9 d 匹配任何非數字字元,相當於 0 9 s 匹配任何空白字元,相當於 fdss ...