正規表示式使用反斜槓" \ "來代表特殊形式或用作轉義字元,這裡跟python的語法衝突,因此,python用" \\\\ "表示正規表示式中的" \ ",因為正規表示式中如果要匹配" \ ",需要用\來轉義,變成" \\ ",而python語法中又需要對字串中每乙個\進行轉義,所以就變成了" \\\\ "。
上面的寫法是不是覺得很麻煩,為了使正規表示式具有更好的可讀性,python特別設計了原始字串(raw string),需要提醒你的是,在寫檔案路徑的時候就不要使用raw string了,這裡存在陷阱。raw string就是用'r'作為字串的字首,如 r"\n":表示兩個字元"\"和"n",而不是換行符了。python中寫正規表示式時推薦使用這種形式。
#r9 = re.search('\\\\', 'www.run\comoob')
#print(r9) #匹配到『\』 '\\\\' python 將其翻譯為'\\' re 模組將其編譯為'\'
上面太麻煩了,明顯不符合實際操作,看下面的:
r10 = re.search(r'\\com
', '
www.run\comoob
') #
加r , 表示python 不翻譯,re 翻譯
print(r10)
#f = open("c:\abc.txt") #錯誤 應該是f = open("c:\\abc.txt")
r7 = re.search(r'
\\com
', '
www.run\comoob
') #注意:
匹配到'\com' 翻譯到螢幕是'\\com'
print(r7)
接下來系統學習正規表示式,文章有點長,希望不懂的同學可以耐心看下去,我會多舉例的
先大致看下,後面會舉例:
字元:
. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
次數:* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次或更多次
重複n到m次
正規表示式本身就是小型程式語言,使用之前肯定要先導入啦,下面例項預設都是匯入的。
一、了解findout,及字元
1. findout 把匹配結果通過列表返回
r =re.findall('zcl', '
fzclfjfrijzclfeizcfj')
print(r) #
['zcl', 'zcl']
2. .匹配到除換行符以外的任乙個字元
r1 =re.findall('z.l', '
fzolfjfrijzclfeizcfj')
print(r1) #
['zol', 'zcl']
r1 =re.findall('
z.l', '
fz\nlfjfrijzclfeizcfj')
print(r1) #
['zcl']
3. ^ (shift+6)區配到以 xx字元開頭
r2 =re.findall('^z.l
', '
fz\nlfjfrijzclfeizcfj')
print(r2) #
r3 =re.findall('
^z.l
', '
zcllfz\nlfjfrijzclfeizcfj')
print(r3) #
['zcl']
4. $ 匹配到以xx結束的字元
r4 =re.findall('z.l$
', '
zcllfz\nlfjfrijzclfeizcfj')
print(r4) #
r5 =re.findall('
z.l$
', '
zcllfz\nlfjfrijzclfeizcfjzcl')
print(r5) #
['zcl']
5. * 區配*前面的字元0到多次
+ 重複一次或更多次
r6 =re.findall('z.*l
', '
zcgfchthllfz\nlfjfrijzclfeizcfjzcl')
print(r6) #
['zcgfchthll', 'zclfeizcfjzcl']
r7 =re.findall('
z.+l
', '
zcgfchthfz\nlfjfrijzcfeizcfjzc')
print(r7) #
6. 重複n次
重複n到m次重複n次或更多次
r8 = re.findall('zcl', '
zccclgfchthfz\nlfjfrijzcfeizcfjzc')
print(r8) #
['zcccl']
7. [bc] 匹配b或c
r9 = re.findall('a[bd]c
', '
dfjabdcdjfabcdf')
print(r9)
8. [a-z] 匹配a至z任意乙個
r9 = re.findall('a[a-z]c
', '
dfjabdcdjfatcdf')
print(r9) #
['atc']
9. 裡面仍有功能有三個: [a-z] [\d]區配數字 [^] 非
r10 = re.findall('歡迎**!a[^f]d
', "
afd"
)print(r10) #
r11 = re.findall('
a[^f]d
', "
ard"
)print(r11) #
['ard']
r12 = re.findall(r'
a\df
', "
a8f"
)print(r12) #
['a8f']
this is zcl『s article! thanks for your support!
文章出處:
python之 re 正規表示式上
正規表示式使用反斜槓 來代表特殊形式或用作轉義字元,這裡跟python的語法衝突,因此,python用 表示正規表示式中的 因為正規表示式中如果要匹配 需要用 來轉義,變成 而python語法中又需要對字串中每乙個 進行轉義,所以就變成了 上面的寫法是不是覺得很麻煩,為了使正規表示式具有更好的可讀性...
python之 re 正規表示式上
正規表示式使用反斜槓 來代表特殊形式或用作轉義字元,這裡跟python的語法衝突,因此,python用 表示正規表示式中的 因為正規表示式中如果要匹配 需要用 來轉義,變成 而python語法中又需要對字串中每乙個 進行轉義,所以就變成了 上面的寫法是不是覺得很麻煩,為了使正規表示式具有更好的可讀性...
正規表示式之re
正規表示式 regular expression 用法 對字串進行模式匹配 1,對常量字串 普通字元 進行匹配 import res pyhton1c 22python1c 5pythonn2c 123 res re.findall python s 此處 python 就是常量字串 print r...