- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
元字符
1.匹配元字符:
. 它匹配除了換行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配換行
^ 匹配行首。除非設置 MULTILINE 標志,它只是匹配字符串的開始。
$ 匹配行尾,行尾被定義為要么是字符串尾,要么是一個換行字符后面的任何位置。
[] 它們常用來指定一個字符類別,所謂字符類別就是你想匹配的一個字符集
反斜杠后面可以加不同的字符以表示不同特殊意義。它也可以用于取消所有的元字符,這樣你就可以在模式中匹配它們了
| 可選項,或者 "or" 操作符。
() 一般情況下表示一個記憶組 (remembered group)。你可以利用 re.search 函數返回對象的 groups() 函數獲取它的值
2.重復元字符:
* 重復0或N次
+ 重復1或N次
? 重復0或1次
{m,n} 該限定符的意思是至少有 m 個重復,至多到 n 個重復
3.用 "" 開始的預定義字符集
d 匹配任何十進制數;它相當于類 [0-9]。
D 匹配任何非數字字符;它相當于類 [^0-9]。
s 匹配任何空白字符;它相當于類 [ fv]。
S 匹配任何非空白字符;它相當于類 [^ fv]。
w 匹配任何字母數字字符;它相當于類 [a-zA-Z0-9_]。
W 匹配任何非字母數字字符;它相當于類 [^a-zA-Z0-9_]。
A 只匹配字符串首。當不在 MULTILINE 模式,A 和 ^ 實際上是一樣的。然而,在 MULTILINE 模式里它們是不同的;A 只是匹配字符串首,而 ^ 還可以匹配在換行符之后字符串的任何位置。
只匹配字符串尾。
單詞邊界。這是個零寬界定符(zero-width assertions)只用以匹配單詞的詞首和詞尾。單詞被定義為一個字母數字序列,因此詞尾就是用空白符或非字母數字符來標示的。
B 另一個零寬界定符(zero-width assertions),它正好同 相反,只在當前位置不在單詞邊界時匹配。
注:[akm$]將匹配字符"a", "k", "m", 或 "$" 中的任意一個;"$"通常用作元字符,但在字?類別里,其特性被除去,恢復成普通字符。
RegexObject(re)對象常用方法
matchObject=re.match(pattern,string,flag='0') :決定 RE 是否在字符串剛開始的位置匹配
matchObject=re.search(pattern,string,flag='0'):掃描字符串,找到這個 RE 匹配的位置
tuple=re.findall(pattern,string,flag='0') : 找到 RE 匹配的所有子串,并把它們作為一個列表返回
matchObjectList=re.finditer(pattern,string):找到 RE 匹配的所有子串,并把它們作為一個迭代器返回
MatchObject對象的常用方法
findstring = matchObject.group() :返回被 RE 匹配的字符串
i = matchObject.start() :返回匹配開始的位置
i = matchObject.end() :返回匹配結束的位置
start,end = matchObject.span() :返回一個元組包含匹配 (開始,結束) 的位置
編譯標志
DOTALL, S :使 . 匹配包括換行在內的所有字符
IGNORECASE, I: 使匹配對大小寫不敏感
LOCALE, L :做本地化識別(locale-aware)匹配
MULTILINE, M: 多行匹配,影響 ^ 和 $
VERBOSE, X :能夠使用 REs 的 verbose 狀態,使之被組織得更清晰易懂
使用心得
1.先編譯后使用:re.compile('pattern')
2.切勿重復編譯:放入全局空間或放入cell空間并實例出一個閉包實例
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP