正規表示式的使用

2022-06-19 15:21:12 字數 4537 閱讀 6670

#原文:

#coding=utf-8

#regular.py 正規表示式

import re #

正則模組

defregular():

data = "

she is more than pretty. 520"#

--- 正則 ---

reg = r"mo"

#指定字元 => span=(7, 9), match='mo'

reg = r"."

#(.)單個字元 => span=(0, 1), match='s'

reg = r"\."

#(\)轉義符 => span=(23, 24), match='.'

reg = r"

[.]"

#()字元集合(注意:部分特殊字元失去特殊意義) => span=(23, 24), match='.'

reg = r"

[love]"#

內任意字元 => span=(2, 3), match='e'

reg = r"

[i-u]"#

(-)範圍 => span=(4, 5), match='i'

reg = r"t"

#{}內為長度(3個6) => span=(20, 22), match='tt'

reg = r"t"

# / / => span=(12, 13), match='t'

reg = r"

(i|o|u)"#

(())組 => span=(4, 5), match='i'

reg = r"^s"

#(^)開頭 => span=(0, 1), match='s'

reg = r"

[^s]"#

([^])取反(不含h) => span=(1, 2), match='h'

reg = r"

520$"#

($)結尾 => span=(25, 28), match='520'

reg = r"

et*"

#(*)匹配個表示式 => ['e', 'e', 'ett']

reg = r"

et+"

#(+)匹配個表示式 => ['ett']

reg = r"

et?"

#(?)匹配個表示式 => ['e', 'e', 'et']

reg = r"

.+?e"#

(?)非貪婪模式(span=(0, 20), match='she is more than pre' => span=(0, 3), match='she')

reg = r"

\145"#

ascii標的8進製數(145=101=e) => span=(2, 3), match='e'

reg = r"\d"

#(\d)單個數字 => span=(25, 26), match='5' (推薦:[0-9])

reg = r"\d"

#(\d)非數字 => span=(0, 1), match='s' (推薦:[^0-9])

reg = r"\s"

#(\s)空白字元 => span=(3, 4), match=' ' (推薦:[\t\n\r\f\v])

reg = r"\s"

#(\s)非空白字元 => span=(0, 1), match='s' (推薦:[^\t\n\r\f\v])

reg = r"\w"

#(\w)單詞 => span=(0, 1), match='s' (推薦:[a-za-z0-9_])

reg = r"\w"

#(\w)非單詞 => span=(3, 4), match=' ' (推薦:[^a-za-z0-9_])

reg = r"

\as"

#(\a)開頭 => span=(0, 1), match='s'

reg = r"

520\z"#

(\z)結尾 => span=(25, 28), match='520'

reg = r"

y\b"

#(\b)單詞邊界(hello) => span=(22, 23), match='y'

reg = r"

o\b"

#(\b)非單詞邊界(world) => span=(8, 9), match='o'

reg = r"

[01]\d\d|2[0-4]\d|25[0-5]"#

或(|) 多位數(匹配0 - 255 直接的數字)

index = re.search(reg, data) #

查詢單個匹配項

index = re.match(r"

she", data) #

匹配開頭 => span=(0, 3), match='she'

index = re.fullmatch(r"

.+", data) #

匹配全部 => span=(0, 28), match='she is more than pretty. 520'

lists = re.findall(reg, data) #

查詢所有匹配項(列表)

lists = re.split(r"

o", data, maxsplit=1) #

根據正則分割字串(maxsplit分割次數) => ['she is m', 're than pretty. 520']

strs = re.sub(r"

\.", r"

!", data, count=1) #

替換(count:替換次數)(匹配替換,未匹配原樣) => she is more than pretty! 520

re.purge()

#清除正規表示式快取

#--- 正規表示式物件 ---

pat = re.compile(r"

e") #

編譯成正則物件

#匹配模式有(使用|組合): re.debug / re.i(ignorecase)不區分大小寫 / re.l(locale) / re.m(multiline) / re.s(dotall) 匹配任何字元, '.'含換行, 沒有此標誌, '.'除換行符 / re.u(unicode) / re.x(verbose)

pat = re.compile(r"

e", re.s|re.i)

index = pat.search(data) #

查詢單個匹配項 => span=(2, 3), match='e'

index = pat.search(data, 5) #

=> span=(10, 11), match='e'

index = pat.search(data, 1, 10)

index = pat.match(data) #

匹配開頭 => none

index = pat.match(data, 2) #

=> span=(2, 3), match='e'

index = pat.match(data, 1, 10)

index = pat.fullmatch(data) #

匹配全部 => none

index = pat.fullmatch(data, 2) #

=> none

index = pat.fullmatch(data, 2, 3) #

span=(2, 3), match='e'

lists = pat.split(data, maxsplit=0) #

分割 => ['sh', ' is mor', ' than pr', 'tty. 520']

lists = pat.findall(data) #

查詢全部 => ['e', 'e', 'e']

lists = pat.findall(data, 5) #

=> ['e', 'e']

lists = pat.findall(data, 1, 10) #

=> ['e']

strs = pat.sub(r"

o", data, count=0) #

替換 => sho is moro than protty. 520

#--- match ---

match =index;

#span=(2, 3), match='e'

strs = match.string #

被匹配的資料 => she is more than pretty. 520

strs = match.group() #

獲取 match(匹配到的) 資料 => e

pos = match.pos #

起始座標

pos = match.endpos #

結束座標

index.span()[0] #

match(匹配到)的起始座標 => 2

index.span()[1] #

match的結束座標 => 3

if__name__ == "

__main__":

regular()

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...

使用正規表示式

如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 和 字元來幫助查詢您正尋找的檔案。字元匹配檔名中的單個字元,而 則匹配乙個或多個字元。乙個如 data?dat 的模式可以找到下述檔案 data1.d...

使用正規表示式

本文節選自 並有稍微修正。使用正規表示式 您可以使用正規表示式做很多事情。在以下的列表中,您可以找到一些最普通 最常用的正規表示式的例子。表示文字串必須在一行的開頭。所以,當查詢行的開頭只為 hosts 的行,可以使用命令 grep ls hosts 代表了一行的結尾。所以,當查詢行的結尾只為 ho...