python正则表达式的5个常量应用

1、re.IGNORECASE
语法: re.IGNORECASE 或简写为 re.I
作用: 进行忽略大小写匹配。
结果: 在默认匹配模式下大写字母N无法匹配小写字母n,而在忽略大小写模式下是可以的

import re
text='你的名字叫什么n'
pattern=r'你的名字叫什么N'
print("默认模式:",re.findall(pattern,text))
print('忽略大小写模式:',re.findall(pattern,text,re.IGNORECASE))
print('忽略大小写模式:',re.findall(pattern,text,re.I))

输出结果:

默认模式: []

忽略大小写模式: ['你的名字叫什么n']

忽略大小写模式: ['你的名字叫什么n']


2、ASCII
语法: re.ASCII 或简写为 re.A

作用: 顾名思义,ASCII表示ASCII码的意思,让\w, \W, \b,\B,\d,\D,\s 和\S 只匹配ASCII,而不是Unicode。

结果:在默认匹配模式下\\w+匹配到了所有字符串,

而在ASCII模式下,只匹配到了i、I、China(ASCII编码支持的字符)

import re
text='i我和我I的祖国China'
pattern=r'\w+'
print('Unicode:',re.findall(pattern,text))
print('ASCII:',re.findall(pattern,text,re.A))

输出结果:

Unicode: ['i我和我I的祖国China']

ASCII: ['i', 'I', 'China']


3、DOTALL
语法: re.DOTALL 或简写为 re.S

作用: DOT表示.,ALL表示所有,连起来就是.匹配所有,包括换行符\n。

默认模式下.是不能匹配行符\n的

结果: 在默认匹配模式下.并没有匹配换行符\n,而是将字符串分开匹配;而在re.DOTALL模式下,换行符\n与字符串一起被匹配到。

import re
text='我和\n我的\n祖国'
pattern=r'.*'
print('默认模式:',re.findall(pattern, text))
print('默认模式:',re.findall(pattern, text,re.S))

输出结果:

默认模式: ['我和', '', '我的', '', '祖国', '']

默认模式: ['我和\n我的\n祖国', '']


 

4、MULTILINE
语法: re.MULTILINE 或简写为 re.M

作用: 多行模式,当某字符串中有换行符\n,

默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。

结果: 正则表达式中^表示匹配行的开头,默认模式下它只能匹配字符串的开头;而在多行模式下,它还可以匹配 换行符\n后面的字符

import re 
text='我和\n我的\n祖国'
pattern=r'^祖国'
print('默认模式:',re.findall(pattern,text))
print('多行模式:',re.findall(pattern,text,re.M))

输出结果:

默认模式: []
多行模式: ['祖国']


5、VERBOSE

语法: re.VERBOSE 或简写为 re.X

作用: 详细模式,可以在正则表达式中加注解!

结果: 默认模式下并不能识别正则表达式中的注释,而详细模式是可以识别的。当一个正则表达式十分复杂的时候,详细模式或许能为你提供另一种注释方式,但它不应该成为炫技的手段,建议谨慎考虑后使用!

import re 
text='我和我的祖国'
pattern=r"""
            ^我和# me and
            我的祖国 #my country
            """

print('默认模式:',re.findall(pattern,text))
print('详细模式:',re.findall(pattern,text,re.X))

输出结果:

默认模式: []
详细模式: ['我和我的祖国']

 

上一篇:Python(re_group_learning)


下一篇:手机号正则校验