正規表示式的使用

2021-08-29 14:02:35 字數 2556 閱讀 5577

1.概念

2.python re模式返回pattern物件

匹配所有函式

3.falg引數引數flag是匹配模式,取值可以使用按位或運算子』|』表示同時生效,比如re.i | re.m。

常用的flag引數:

引數屬性

re.i

忽略大小寫

re.m

多行模式,改變』^'和'$'的行為

re.s

點任意匹配模式,改變』.'的行為

re.l

使預定字元類 \w \w \b \b \s \s 取決於當前區域設定

re.u

使預定字元類 \w \w \b \b \s \s \d \d 取決於unicode定義的字元屬性

re.x

詳細模式。這個模式下正規表示式可以是多行,忽略空白字元,並可以加入注釋。

4.正規表示式通常通過特殊的語法來表示

元字元屬性.

任意單字元 想表示字串的 . 就這麼些 \.

\d乙個數字 相當於[0-9]

\d乙個 非 數字

\w乙個數字字母或者下劃線 [a-za-z0-9_](中文)

\w\w的反面

\s空白

\s非空白

\b單詞邊界 r』\bis\b』特殊的地方。單詞邊界前一定要加r』

5.正規表示式常用的規則

取值:

表示式屬性

[abc]

abc中的乙個

[a-z]

a-z中的乙個

[0-9]

0-9中的乙個數字

[a-f0-5]

a-f或0-5中的乙個

[ab][de][1]

每個[ ]取乙個,連起來

量詞:

表示式屬性

m個 a:4個連續的a

m-n個 b:2-5個連續的b

1個以上

0個以上

0次或一次

分組:(name|age|***) 乙個name或者age或者***

貪婪模式:

會盡量長的區尋找結尾

反貪婪(在後面加乙個?):只要乙個滿足就可以

#貪婪模式

reg2=re.compile('a\w*b')

#非貪婪

reg3=re.compile('a\w*?b')

#正規表示式

import re

#貪婪模式

reg2=re.compile('a\w*b')

#非貪婪

reg3=re.compile('a\w*?b')

str2='a123b456b789b'

result2=re.findall(reg2,str2)

result3=re.findall(reg3,str2)

print(result2)

print(result3)

6.正則提取示例

import re

# 需要被提取的字段

info='''

導演: 弗蘭克·德拉邦特 frank darabont 主演: 蒂姆·羅蘋斯 tim robbins /...

1994 / 美國 / 犯罪 劇情

9.6 1135992人評價

希望讓人自由。

'''#提取時間

#方法一:

reg_year=re.compile("\d\s/")

result1=re.findall(reg_year,info)

print(result1[0][0:4])#讀取列表第乙個的前四個字元

#方法二

reg_year=re.compile("(\d)\s/")#提前裡面只符合的內容

result1=re.findall(reg_year,info)

print(result1)

#提取導演

reg_name=re.compile('導演:(.*)主演:',re.s)#re.s任意匹配模式,前後標識字元不同行

result2=re.findall(reg_name,info)

print(result2[0].strip())#去除左右空格

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

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

使用正規表示式

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

使用正規表示式

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