compile(pattern[, flags]) 根據包含正規表示式的字串建立模式物件,提高匹配效率,search match 均在內部進行了compile轉換;
search(pattern, string[, flags]) 在字串中查詢模式 ,返回第乙個查詢的子串的matchobject;
match(pattern, string[, flags]) 在字串開頭匹配模式 ,忽略字串多餘的尾部,若要全匹配,模式新增$,表示結尾;
split(pattern, string[, maxsplit=0]) 根據模式來分割字串 ,如果模式包含圓括號,將在分割得到的子串之間插入括號中的內容,例如,re.split(『o(o)』, 『foobar』)的結果為[『f』, 『o』, 『bar』],指定maxsplit最多分割多少次;
findall(pattern, string) 返回乙個列表,其中包含字串中所有與模式匹配的子串 ;
sub(pat, repl, string[, count=0]) 將字串中與模式pat匹配的子串都替換為repl ;
escape(string) 對字串中所有的正規表示式特殊字元都進行轉義,即新增轉義符 。
以模式中的左括號序號為編號分組,整個模式為編組0,依次為1,2,3,,,99。
matchobject方法:
group()返回編組對應子串;
start()end()span()分別返回對應編組開始,結束,範圍的子串位置。
在模式串中使用verbose可以忽略模式串中的空格,製表,換行;
>>
> re.sub(emphasis_pattern, r'\1'
,'hello, *world*!'
)>
'hello, world!'
對於所有的重複運算子,都 可在後面加上問號來將其指定為非貪婪的。
# templates.py
import fileinput, re
# 與使用方括號括起的字段匹配
field_pat = re.
compile
(r'\[(.+?)\]'
)# 我們將把變數收集到這裡:
scope =
# 用於呼叫re.sub:
defreplacement
(match)
:
code = match.group(1)
try:
# 如果欄位為表示式,就返回其結果:
return
str(
eval
(code, scope)
)except syntaxerror:
# 否則在當前作用域內執行該賦值語句
# 並返回乙個空字串
return
''# 獲取所有文字並合併成乙個字串:
lines =
for line in fileinput.
input()
:
text =
''.join(lines)
# 替換所有與字段模式匹配的內容:
print
(field_pat.sub(replacement, text)
)
python 正規表示式 re
match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...
python正規表示式 re
re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...
python正規表示式(re)
在python中re模組用於對正規表示式 regular expression 的支援。正規表示式是可以匹配文字片段的模式。一 正規表示式的書寫 1 萬用字元 點 可以匹配任何字元 除了換行符 如 ike 可以匹配 bike like 等 2 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...