修飾符 | 描述 |
---|---|
re.I | 忽略大小寫 |
re.L | 做本地化識別(locale-aware)匹配 |
re.M | 多行匹配,影響 ^ 和 $ |
re.S | 即為 . 并且包括換行符在內的任意字符(. 不包括換行符) |
re.U | 根據Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B |
re.X | 為了增加可讀性,忽略空格和 # 后面的注釋 |
re.I
忽略待匹配字符串的大小寫
In[2]: re.findall("dream", "I HAVE A DREAM")
Out[2]: []
In[3]: re.findall("dream", "I HAVE A DREAM", re.I)
Out[3]: ['DREAM']
re.L
做本地化local識別,python中有個locale模塊,locale代表不同的語言,地區和字符集
In[2]: re.L
Out[2]: <RegexFlag.LOCALE: 4>
re.M
多行匹配,影響 ^ 和 $
In[2]: text='''10-1
11-2'''
In[3]: re.findall(r'[0-9]$', text, re.M)
Out[3]: ['1', '2']
In[4]: re.findall(r'[0-9]$', text)
Out[4]: ['2']
In[5]: re.findall(r'^[0-9]+', text)
Out[5]: ['10']
In[6]: re.findall(r'^[0-9]+', text, re.M)
Out[6]: ['10', '11']
re.S
將換行符包含進“.”
In[2]: text='''10-1
11-2'''
In[3]: re.findall(r'-[0-9]+.[0-9]+-', text)
Out[3]: []
In[4]: re.findall(r'-[0-9]+.[0-9]+-', text, re.S)
Out[4]: ['-1\n11-']
re.U
根據Unicode字符集解析字符。
re.X
允許在正則表達式中添加注釋
In[2]: rc = re.compile(r"""
# 以字母開頭
^[a-zA-Z]
# 或者以數字結尾
|
\d$
""", re.X)
In[3]: rc.findall("hello&&world123")
Out[3]: ['h', '3']
混合使用
多個修飾符可同時疊加使用
In[2]: text='''I HAVE A
DREAM'''
In[3]: re.findall("^dream", text)
Out[3]: []
In[4]: re.findall("^dream", text, re.I)
Out[4]: []
# 忽略大小寫,同時開啟多行模式
In[5]: re.findall("^dream", text, re.I | re.M)
Out[5]: ['DREAM']