修饰符 | 描述 |
---|---|
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']