python正規表示式re

2021-10-09 02:48:48 字數 1647 閱讀 4809

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 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...