正则表达式修饰符 - 可选标志 正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志: 修饰符 描述 re.I 使匹配对大小写不敏感 re.L 做本地化识别(locale-aware)匹配 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 re.U 根据Unicode字符集解析字符。这个标志影响 w, W, , B. re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
#!/usr/bin/python3 import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print ("searchObj.group() : ", searchObj.group()) print ("searchObj.group(1) : ", searchObj.group(1)) print ("searchObj.group(2) : ", searchObj.group(2)) else: print ("Nothing found!!")
searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter
emphasis_pattern = r'*([^*]+)*' 或者 emphasis_pattern = re.compile(r''' ... * # 起始突出标志——一个星号 ... ( # 与要突出的内容匹配的编组的起始位置 ... [^*]+ # 与除星号外的其他字符都匹配 ... ) # 编组到此结束 ... * # 结束突出标志 ... ''', re.VERBOSE) re.sub(emphasis_pattern, r'<em>1</em>', 'Hello, *world*!') 结果: 'Hello, <em>world</em>!' 其中1为逆向引用
详细参见
http://www.runoob.com/python3/python3-reg-expressions.html#flags