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
mat
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等更是將正規表示式納入語言內部。正規表示式由原子和運算子組成。最簡單的原子是單個字元,如果乙個正規表示式由單個字元組成,則該字元必須出現在目標文字的某處...