正規表示式筆記

2021-09-11 17:32:26 字數 993 閱讀 1486

#!/usr/bin/python

import re

line = "cats are smarter than dogs"

matchobj = re.match( r'(.*) are (.*?) .*', line, re.m|re.i)

if matchobj:

print "matchobj.group() : ", matchobj.group()

print "matchobj.group(1) : ", matchobj.group(1)

print "matchobj.group(2) : ", matchobj.group(2)

else:

print "no match!!"

以上例項執行結果如下:

matchobj.group() : cats are smarter than dogs

matchobj.group(1) : cats

matchobj.group(2) : smarter

正規表示式:

r』(.) are (.?) .』

解析:首先,這是乙個字串,前面的乙個 r 表示字串為非轉義的原始字串,讓編譯器忽略反斜槓,也就是忽略轉義字元。但是這個字串裡沒有反斜槓,所以這個 r 可有可無。

(.) 第乙個匹配分組,.* 代表匹配除換行符之外的所有字元。

(.?) 第二個匹配分組,.? 後面多個問號,代表非貪婪模式,也就是說只匹配符合條件的最少字元

後面的乙個 .* 沒有括號包圍,所以不是分組,匹配效果和第乙個一樣,但是不計入匹配結果中。

matchobj.group() 等同於 matchobj.group(0),表示匹配到的完整文字字元

matchobj.group(1) 得到第一組匹配結果,也就是(.)匹配到的

matchobj.group(2) 得到第二組匹配結果,也就是(.?)匹配到的

因為只有匹配結果中只有兩組,所以如果填 3 時會報錯。

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...

正規表示式筆記

不同的語系編碼的順序不一樣 lang c 0 1 2 3 a b c d z a b c d z lang zh cn 0 1 2 3 4 a a b b c c z z 使用正規表示式時,需要留意環境的語系是什麼,否則會有不同的結果 alnum 英文大小寫字元及數字 0 9 a z a z alp...

正規表示式筆記

d 0 9中的任意乙個數字 w a z,a z,0 9,中的任意乙個,即字母數字下劃線 s 空格,製表符,換頁符等空白字元的其中任意乙個 小數點可以匹配換行符 n 以外的任意乙個字元 匹配某範圍內的任意乙個字元 ab9 匹配 a b 9 中的任意乙個 abc 匹配abc之外的任意乙個字元 a g 匹...