问题:用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行

解决方案:

1、正则表达式添加对换行符的支持;

2、re.compile()函数一个有用的标记-re.DOTALL使得正则表达式中的句点(.)可以匹配所有的字符,也包括换行符;

如上问题一般出现在希望使用句点(.)来匹配任意字符,但是忘记了句点并不能匹配换行符时。例如,假设想匹配C语言风格的注释:

import re

text = '''/* this is a
... multiline comment */
...'''
comment = re.compile(r'/\*(.*?)\*/')
print(comment.findall(text)) comment2 = re.compile(r'/\*((?:.|\n)*?)\*/') #(?:.|\n)指定了一个非捕获组(即,这个组只做匹配但不捕获结果,也不会分配组号)
print(comment2.findall(text)) comment_dotall=re.compile(r'/*(.*?)\*/',re.DOTALL)
print (comment_dotall.findall(text))
>>> ================================ RESTART ================================
>>>
[]
[' this is a\n... multiline comment ']
['* this is a\n... multiline comment ']
>>>

最新文章

  1. dotnet获取PDF文件的页数
  2. Windows7 + Ubuntu双系统安装过程记录
  3. MySQL3:索引
  4. HDU 4734 F(x)
  5. BZOJ3229 石子合并
  6. windows平台快速安装 matplotlib
  7. Hadoop MapReduce中压缩技术的使用
  8. xampp进程和非进程执行
  9. WPF ResourceDictionary的使用
  10. 说说 bash 的 if 语句
  11. java实现https请求
  12. configparser模块(拷贝)
  13. asyncio模块中的Future和Task
  14. 根据Excel模板,填写报表,并下载到web浏览器端
  15. java并发编程目录
  16. LinkedBlockQueue生产消费源码解析
  17. ejabberd在windows10上安装记录
  18. 难度2:ASCII码排序
  19. OSGi 系列(十四)之 Event Admin Service
  20. 权限管理系统---django版本

热门文章

  1. Android 动态添加删除ExpandableListView的item的例子
  2. saltstack故障解决
  3. Java ConcurrentHashMap
  4. Bugfree实用心得_转
  5. Mysql主从库同步错误:1062 Error 'Duplicate entry '1438019'
  6. Java基础之创建窗口——使用SpringLayout管理器(TrySpringLayout)
  7. Java I/O解读与使用实例
  8. Lintcode: Sort Letters by Case
  9. Summary: Trie Data Structure
  10. Android Support Font 安卓系统支持字体(配图)