python多行匹配
Ⅰ 趣玩python第16关:3个技巧掌握正则
字符串的匹配查询
Python中的re模块中的findall函数可以对指定的字符串进行遍历匹配,如下:
findall(pattern, string, flags=0)
pattern:指定需要匹配的正则表达式。
string:指定待处理的字符串。
flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是让正则表达式对大小写不敏感;re.M的模式是让正则表达式可以多行匹配;re.S的模式指明正则符号.可以匹配任意字符,包括换行符 ;re.X模式允许正则表达式可以写得更加详细,如多行表示、忽略空白字符、加入注释等。
字符串的匹配替换
re模块中的sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl,如下:
sub(pattern, repl, string, count=0, flags=0)
pattern:同findall函数中的pattern。
repl:指定替换成的新值。
string:同findall函数中的string。
count:用于指定最多替换的次数,默认为全部替换。
flags:同findall函数。
字符串的匹配分割
re模块中的split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split,如下:
split(pattern, string, maxsplit=0, flags=0)
pattern:同findall函数中的pattern。
maxsplit:用于指定最大分割次数,默认为全部分割。
string:同findall函数中的string。
flags:同findall函数中的flags。
以上就是本次分享的全部内容了,不知大家对我讲述的Python正则表达式妙用感觉怎么样?
脑筋急转弯:有人想喝点牛奶解渴,却一命呜呼了,为什么?
Ⅱ 强烈推荐!Python 这个宝藏库 re 正则匹配
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作。
在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具 ,下面总结了 re 模块的常用方法。
d 匹配所有的十进制数字 0-9
D 匹配所有的非数字,包含下划线
s 匹配所有空白字符(空格、TAB等)
S 匹配所有非空白字符,包含下划线
w 匹配所有字母、汉字、数字 a-z A-Z 0-9
W 匹配所有非字母、汉字、数字,包含下划线
备注迹凳:符号.* 贪婪,符号.*? 非贪婪
[abc]:能匹配其中的单个字符
[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)
[2-9] [1-3]:能够做组合匹配
4.{ }:用于标记前面的字符出现的频率,有如下情况:
{n,m}:代表前面字符最少出现n次,最多出现m次
{n,}:代表前面字符最少出现n次,最多不受限制
{,m}:代表前面字符最多出现n次,最少不受限制
{n}:前面的字符必须出现n次
字符串中有反斜杠的,需要对反斜杠做转义
():分组字符,可以为匹配到的内容分组,快速获取到分组中的数据 在正则里面 "()" 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 "()" 中的内容。
group:用于查看指定分组匹配到的内容
groups:返回一个元组,组内为所有匹配到的内容
groupdict:返回一个字典,包含分组的键值对,需要为分组命名
作用:可以将字符串匹配正则表达式的部分割开并返回一个列表
flags定义包括:
re.I:忽略大小写
re.L:表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
re.M:多行模式
re.S:’.’并且包括换行符在内的任意字符(注意:’.’不包括换行符)
re.U:表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
在 Python 中使用正耐孙则表达式之前,先使用以下命令导入 re 模块
例如:
‘(d)(a)1’ 表示:匹配第一是数字,第二是字符a,第三 1 必须匹配第一个一样的数字重复一次姿亩旅,也就是被引用一次。
如 “9a9” 被匹配,但 “9a8” 不会被匹配,因为第三位的 1 必须是 9 才可以。
‘(d)(a)2’ 表示:匹配第一个是一个数字,第二个是a,第三个 2 必须是第二组()中匹配一样的。
如 “8aa” 被匹配,但 “8ab”,“7a7” 不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。
Ⅲ Python正则表达式中re.M 是什么意思
Python正则表达式中re.M的意思是:多行匹配,影响 ^ 和 $。
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
re.I:使匹配对大小写不敏感。
re.L:做本地化识别(locale-aware)匹配。
re.S:使 . 匹配包括换行在内的所有字符。
re.U:根据Unicode字符集解析字符。这个标志影响 w, W, , B。
re.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
(3)python多行匹配扩展阅读
正则表达式的模式有I、L、M、S、X、U六种模式:
1、I (IGNORECASE) , 忽略大小写的匹配模式。
2、L (LOCALE),字符集本地化。
使预定字符类 w W 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 s S d D 取决于unicode定义的字符属性。