Python正则-多行匹配
来源:互联网 发布:广州java培训哪里好 编辑:程序博客网 时间:2024/06/06 04:54
一些regular的tips:
1 非贪婪flag
>>> re.findall(r"a(\d+?)", "a23b") ['2']>>> re.findall(r"a(\d+)", "a23b") ['23']
注意比较这种情况:
>>> re.findall(r"a(\d+)b", "a23b") ['23']>>> re.findall(r"a(\d+?)b", "a23b") ['23']
2 如果你要多行匹配,那么加上re.S和re.M标志
re.S:.将会匹配换行符,默认.不会匹配换行符
>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b") []>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b", re.S) [('23', '34')]>>>re.M:^$标志将会匹配每一行,默认^和$只会匹配第一行>>> re.findall(r"^a(\d+)b", "a23b\na34b") ['23']>>> re.findall(r"^a(\d+)b", "a23b\na34b", re.M) ['23', '34']但是,如果没有^标志,>>> re.findall(r"a(\d+)b", "a23b\na23b") ['23', '23']可见,是无需re.MPopularity: 53%
re.compile(strPattern[, flag]):
这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。另外,你也可以在regex字符串中指定模式,比如re.compile('pattern', re.I | re.M)与re.compile('(?im)pattern')是等价的。
可选值有:
- re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
- M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
- S(DOTALL): 点任意匹配模式,改变'.'的行为
- L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
- U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
- X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")
re提供了众多模块方法用于完成正则表达式的功能。这些方法可以使用Pattern实例的相应方法替代,唯一的好处是少写一行re.compile()代码,但同时也无法复用编译后的Pattern对象。这些方法将在Pattern类的实例方法部分一起介绍。如上面这个例子可以简写为:
12 m = re.match(r'hello', 'hello world!') print m.group()
re模块还提供了一个方法escape(string),用于将string中的正则表达式元字符如*/+/?等之前加上转义符再返回,在需要大量匹配元字符时有那么一点用。
参考:http://www.juyimeng.com/python-multi-line-non-greedy-regular-expression-sample.html
- Python正则-多行匹配
- Python正则-多行匹配
- Python正则-多行匹配
- python非贪婪、多行匹配正则表达式例子
- python非贪婪、多行匹配正则表达式
- python 常用正则匹配
- python 常用正则匹配
- Python 正则匹配学习
- python正则匹配中文
- python之正则匹配
- python匹配ip正则
- 正则匹配(Python)
- python 正则匹配
- Python正则匹配中文
- python 正则表达式匹配
- python 正则匹配学习
- Python正则匹配
- Python 正则匹配数字
- 最近的一些感悟
- POJ 1252
- take it easy II
- 76555784368578
- 哈夫曼树
- Python正则-多行匹配
- loner_li 机试题 编写一个简单的计算器实现加减乘除:输入两个数字和一个运算符号,输出结果(注意容错性)
- 有关Junit的多线程测试
- jquery easyui dialog 拖拽问题
- 母函数详解
- OpenStack, What it really is?
- C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
- DNS协议解析
- 开机忘记密码