Python正则表达式中re.M的意思是:多行匹配,影响 ^ 和 $。
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
re.I:使匹配对大小写不敏感。
re.L:做本地化识别(locale-aware)匹配。
re.S:使 . 匹配包括换行在内的所有字符。
re.U:根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B。
re.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
扩展资料
正则表达式的模式有I、L、M、S、X、U六种模式:
1、I (IGNORECASE) , 忽略大小写的匹配模式。
2、L (LOCALE),字符集本地化。
使预定字符类 \w \W \b \B \s \S 取决于当前区域设定,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9_],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 ""。加上这L选项和就可以匹配了,不常用。
3、M (MULTILINE),多行模式。
改变 ^ 和 $ 的行为,^匹配开始位置,这种模式下匹配每一行的开始,$匹配结束位置,这种模式下匹配每一行的结束。
4、S (DOTALL),点任意匹配模式。
此模式下.可匹配任何字符,包括换行符。
5、X (VERBOSE),冗余模式。
这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释,方便理解。
6、U (UNICODE),unicode定义模式。
使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性。
正则表达式中的re.M表示将字符串视为多行,从而^匹配每一行的行首,$匹配每一行的行尾
我给你个Python语言的例子,你看看吧
这个程序是匹配冒号加一个空格后的数字串,中间有换行符\n所以用多行匹配re.M
#!/usr/bin/python3
import re
line = "IF_MIB::=Counter32: 12345\nIF_MIB::=Counter32: 1234556";
result = re.findall( r'(?<=\:\s)\d+$', line, re.M)
if result:
print (result)
else:
print ("Nothing found!!")
运行结果
['12345', '1234556']