1. 程式人生 > >Python:正則表示式的元字元

Python:正則表示式的元字元

#!/usr/bin/env python
# coding:UTF-8


"""
@version: python3.x
@author:曹新健
@contact: [email protected]
@software: PyCharm
@file: 2.正則表示式的元字元.py
@time: 2018/9/15 17:02
"""

'''
單個字元匹配如下:
.匹配除換行符以外的任意字元
[0123456789]  []是字元集合,表示匹配方括號中所包含的任意一個字元
[a-z]    匹配任意一個小寫字元 
[A-Z]    匹配任意一個大寫字元
[0-9]    匹配任意一個數字
[0-9a-zA-Z]  匹配任意一個數字和字母
[0-9a-zA-Z_]  匹配任意一個數字、字母和_
[^cxj]      匹配除了cxj之外的所有字元,中括號裡面的^成為脫字元,表示不匹配集合中的字元
[^0-9]      匹配所有的非數字字元
\d      匹配數字
\D      匹配非數字字元
\w      匹配數字,字母和下劃線
\W      匹配非數字,字母和下劃線
\s      匹配任意的空白符(空格、換行、回車、換頁、製表)同[ \f\n\r\t]
\S      匹配任意的非空白符
'''

'''
錨字元(邊界字元)
^       行首匹配,和在[]裡的^不是一個意思
$       行尾匹配
\A      匹配字串開始,它和^的區別是\A只匹配整個字串的開頭,即使在re.M模式下
也不會匹配它的行首
\Z      匹配字串結尾,它和$的區別是\Z只匹配整個字串的結尾,即使在re.M模式下
也不會匹配它的結尾
\b      匹配一個單詞的邊界,也就是單詞和空格的位置
        比如r'er\b'能匹配never 不能匹配nerve
\B      匹配非單詞的邊界
        比如r'er\b'能匹配nerve 不能匹配never
'''

'''
匹配多個字元
(xyz)       匹配小括號內的xyz,作為一個整體去匹配
x?      匹配0個或者1個x  #非貪婪匹配
x*      匹配0個或者任意多個x #貪婪匹配
x+      匹配1個或者任意多個x #貪婪匹配
x{n}        匹配確定的n個x
x{n,}       匹配至少n個x #貪婪匹配
x{n,m}      匹配n到m個x.n<=m
x|y     |表示或,匹配x或y

*? +? x?        最小匹配,通常都是儘可能多的匹配,可以使用這種解決貪婪匹配
(?:x)       類似(xyz),但不表示一個組

'''