python 正規表示式 簡介

2021-08-29 04:44:08 字數 3539 閱讀 1041

1.正規表示式:描述字串排列的一套規則

2.可以使用正規表示式提取出所有滿足規則的字串

3.在python中使用re模組是實現在python正規表示式的功能

正規表示式的基礎知識:

1.原子

2.元字元

3.模式修正

原子:原子是正規表示式中最基礎的組成單位,每個正規表示式中至少包含乙個原子

1.普通字元做原子

import re

pattern = "gaga"

str = ""

result = re.search(pattern,str)

print(result)

執行結果:

<_sre.sre_match object; span=(11, 15), match=『gaga』>

2.通用字元作為原子

import re

pattern = "\w\dpython\w"

string = "abdcdphphaya45python5_py"

result = re.search(pattern,string)

print(result)

執行結果:

<_sre.sre_match object; span=(12, 21), match=『45python5』>

元字元正規表示式手冊中的字元

模式修正修正符: i g m s x a d u e

修正符:i 不區分大小寫的匹配; ignorecase

//如:"/abc/i"可以與abc或abc或abc等匹配;

修正符:g 表示全域性匹配

修正符:m* 將字串視為多行,不管是那行都能匹配; multiline

例://模式為:mod

e="/

abc/

m";/

/要匹配

的字串

為:

mode="/abc/m"; //要匹配的字串為:

mode="

/abc

/m";

//要匹

配的字元

串為:str=「bcefg5e\nabcdfe」

//注意其中\n,換行了;abc換到了下一行;

//s tr

和str和

str和

mode仍可以匹配,修正符m使得多行也可匹配;

修正符:s 將字串視為單行,換行符作為普通字元; singleline

//例://模式為:mod

e="/

pr.y

/";/

/要匹配

字串為

:mode="/pr.y/"; //要匹配字串為:

mode="

/pr.

y/";

//要匹

配字串

為:str=「pr\ny」;

//兩者不可匹配; . 是除了換行以外的字元可匹配;

//修改下模式為:$mode="/pr.y/s";

//其中修正符s將\n視為普通字元,即不是換行;

//最後兩者可以匹配;

修正符:x 將模式中的空白忽略;

修正符:a 強制從目標字串開頭匹配;

例://mod

e="/

abc/

a";/

/可以與

mode="/abc/a"; //可以與

mode="

/abc

/a";

//可以

與str="abcsdfi"匹配,

//不可以與str

2="s

dsda

bc"匹

配;//

因為

str2="sdsdabc"匹配; //因為

str2="

sdsd

abc"

匹配;/

/因為str2不是以abc開頭;

修正符:d 如果使用限制結

尾字元,

則不允許

結尾有換

行;例:

//模式

為:

限制結尾字元,則不允許結尾有換行; 例://模式為:

限制結尾字元

,則不允

許結尾有

換行;例

://模

式為:mode="/abc/";

//可以

與最後有

換行

的/"; //可以與最後有換行的

/";//可

以與最後

有換行的

str=「adshabc\n"匹配;

//元子符katex parse error: expected 'eof', got '\n' at position 9: 會忽略最後的換行\̲n̲; //…mode=」/abc/d",

//則不能與$str="adshabc\n"匹配,

//修正符d限制其不可有換行;必需以abc結尾;

修正符:u 只匹配最近的乙個字串;不重複匹配;

例:如模式為:

$mode="/a.*c/";

s tr

="ab

cabb

bcab

bbbb

c";p

regm

atch

(str="abcabbbcabbbbbc"; preg_match(

str="a

bcab

bbca

bbbb

bc";

preg

m​at

ch(mode,str

,str,

str,

content);

echo con

tent

[0];

//輸出

:abc

abbb

cabb

bbbc

;//如

果content[0];//輸出:abcabbbcabbbbbc; //如果

conten

t[0]

;//輸

出:ab

cabb

bcab

bbbb

c;//

如果mode="/a.*c/";變成$mode="/a.*c/u";

// 則只匹配最近乙個字串,輸出:abc;

修正符:e 配合函式preg_replace()使用,

可以把匹配來的字串當作正規表示式執行;

import re

pattern = ".python.."

string = "abcdphpss365python_py"

result = re.search(pattern,string,re.i)

print(result)

執行結果:

<_sre.sre_match object; span=(11, 20), match=『5python_p』>

python正規表示式簡介

之前未接觸過正規表示式,今日看python網路爬蟲的原始碼,裡面一行正規表示式匹配的 初看之下,不是很理解,如下 myitems re.findall unicodepage,re.s 這種匹配方式,按理解應該是匹配任意字元0個或多個 re.s模式,可以匹配 n 但是這個 總覺的在這兒是多餘的,既然...

Python正規表示式簡介

作者 i n alghani khalid 編譯 vk towards datas science 假設你要根據給定的查詢搜尋某個內容。如果你只依靠乙個字串,你就得不到你想要的東西。那麼,如何在海量資訊中尋找你需要的東西呢?當然,你需要乙個模式來識別你想要查詢的字串。為此,我們可以使用正規表示式 r...

正規表示式簡介

乙個正規表示式就是乙個模式,由與文字進行匹配的字串行組成。正規表示式有著廣泛的應用 grep sed vim make等等,某些指令碼語言如perl等更是將正規表示式納入語言內部。正規表示式由原子和運算子組成。最簡單的原子是單個字元,如果乙個正規表示式由單個字元組成,則該字元必須出現在目標文字的某處...