正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
修饰符 描述re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
正则表达式对象 re.RegexObject
re.compile() 返回 RegexObject 对象。
re.MatchObjectgroup() 返回被 RE 匹配的字符串。 start()返回匹配开始的位置 nd()返回匹配结束的位置 span()返回一个元组包含匹配 (开始,结束) 的位置
举几个栗子匹配出河南省焦作市温县所有2000年后出生的人的身份证号
'^410825[^10]\d{3}\d{7}[0-9x]'匹配出一篇文档中所有的div.user-info标签<div>username:Monkey</div>
'<div>.*</div>'匹配出name和age
msg = 'name:monkey,age:100;' obj = re.match('name:(\w+),age:(\d+)', msg) print(obj.group(0)) # name:monkey,age:100 原始字符 print(obj.group(1)) # monkey 第一匹配 print(obj.group(2)) # 100 print(obj.groups()) # ('monkey', '100')约束密码中必须有除下划线外的特殊字符
'.*\W+.*' rules meaning{n,m} 来限制匹配的长度
[abc] 用来限制匹配的范围 必须是 a或b或c
[^abc] 不能是 a或b或c
| 表示或 1(1|2)0可以匹配 110 或 120
^表示行的开头 ^\d表示必须以数字开头。
$表示行的结束 \d$表示必须以数字结束。
re模常用方法 re.match()
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
语法 re.match(pattern, string, flags=0) """ pattern : 匹配的正则表达式 string : 要匹配的字符串 flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见上方可选标志表格 """ 例子 print(re.match('Monkey', 'Monkey is a good boy!').span()) print(re.match('goood boy', 'Monkey is a good boy!')) # __________________________ # (0, 6) # None re.search()re.search 扫描整个字符串并返回第一个成功的匹配。
语法re.search(pattern, string, flags=0)
import re re.search(pattern, string, flags=0) """ pattern : 匹配的正则表达式 string : 要匹配的字符串 flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见上方可选标志表格 """ 例子 import re x = re.search('monkey','monkey, monkey, _kali monkey') print(x.span()) # (0, 6) re.compile()compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。