在Python的正则表达式中,有一个参数为re.S。它表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串,包括“\n”。看如下代码:

import re
a = '''asdfsafhellopass:
234455
worldafdsf
'''
b = re.findall('hello(.*?)world',a)
c = re.findall('hello(.*?)world',a,re.S)
print 'b is ' , b
print 'c is ' , c

运行结果如下:

b is  []
c is ['pass:\n\t234455\n\t']

正则表达式中,“.”的作用是匹配除“\n”以外的任何字符,也就是说,它是在一行中进行匹配。这里的“行”是以“\n”进行区分的。a字符串有每行的末尾有一个“\n”,不过它不可见。

如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。

在re.py库的介绍中有以下语句:

"." Matches any character except a newline.

S DOTALL "." matches any character at all, including the newline.

转自http://www.cnblogs.com/xieqiankun/p/re-sinpython.html

最新文章

  1. Android 对电话进行监听和挂断
  2. .NET Remoting获取配置通道:
  3. Python基本语句
  4. http://jingyan.baidu.com/article/d169e186aa8728436611d8f3.html
  5. web标准
  6. mvc路由规则相关
  7. HDU4670 Cube number on a tree 树分治
  8. 什么是Ajax? (转载于疯狂客的BLOG)
  9. JS笔试题
  10. JavaEE Tutorials (29) - Duke辅导案例研究示例
  11. HDU1068/POJ1466_Girls and Boys(二分图/最大独立集=N-最大匹配)
  12. Node.js博客搭建
  13. 10本Java书籍推荐
  14. Alpha第四天
  15. python3中argparse模块
  16. spark中map与mapPartitions区别
  17. VS添加WebService工具
  18. Ubuntu教程
  19. flask数据库迁移理解及命令
  20. JSON文件导入Unity3d中是空的的问题

热门文章

  1. 【hdu5306】Gorgeous Sequence 线段树区间最值操作
  2. ES2015中let的暂时性死区(TDZ)
  3. 【HDU4689】Derangement(动态规划)
  4. 【CF700E】Cool Slogans(后缀自动机)
  5. python基础----__setitem__,__getitem,__delitem__
  6. GitLab安装部署与管理
  7. Spring MVC @CookieValue注解
  8. 学习 opencv---(13)opencv霍夫变换:霍夫线变换,霍夫圆变换
  9. [ldap]ldap server安装以及图形化操作
  10. 题解 P4092 【[HEOI2016/TJOI2016]树】