感谢:

https://github.com/yidao620c/python3-cookbook

如有侵权,请联系我整改。

本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有增删。

2.4 字符串匹配和搜索

text.startswith()以xxx开头,

text.endswith()以xxx结尾,

text.find()查找xxx的位置,返回下标,

复杂匹配可以用re

import re

示例,

>>> text
'today is 11/27/2012. pycon starts 3/13/2013.'
>>> datepat = re.compile(r'(\d+)/(\d+)/(\d+)')
>>> datepat
re.compile('(\\d+)/(\\d+)/(\\d+)')
>>> datepat_no_capture = re.compile(r'\d+/\d+/\d+')
>>> datepat_no_capture
re.compile('\\d+/\\d+/\\d+')
>>> datepat.findall(text)
[('11', '27', '2012'), ('3', '13', '2013')]
>>> datepat_no_capture.findall(text)
['11/27/2012', '3/13/2013']

re.compile预编译为模式对象,效率更高,

注意,datepatdatepat_no_capture的差异,前者带(),后者没有,

()意味着捕获分组,结果以tupple形式返回,以便对每一项做后续处理

在正则表达式中,r,表示原始字符串,否则反斜杠也需要转义,'(\\d+)/(\\d+)/(\\d+)'

除了findall()match()可以用来从头(起始)匹配,尾部不管,

示例,

>>> datepat.match('11/27/2012')
<re.Match object; span=(0, 10), match='11/27/2012'>
>>> datepat.match('x11/27/2012')
>>> datepat.match('11/27/2012x')
<re.Match object; span=(0, 10), match='11/27/2012'>

最新文章

  1. 【原】Spark之机器学习(Python版)(二)——分类
  2. SpringMVC工作原理
  3. 必须正确理解的---ng指令中的compile与link函数解析
  4. jQuery cookie插件保存用户登陆信息
  5. 【C#学习笔记】从粘贴板复制文本
  6. centos6.5 安装mono
  7. python challenge第1关--NoteBook上的“乱码”
  8. careercup-数学与概率 7.7
  9. Monkey源码分析之事件源
  10. 职业定位(移动端、ios开发、Android开发)
  11. C#图解教程 第二十四章 反射和特性
  12. Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式
  13. pmi-ACP考试知识点梳理(部分)
  14. [原创]Xilinx Vivado 2017.4/2018.3/2016.4/2015.4/ISE14.7下载及其安装
  15. 设计模式系列之策略模式(Strategy Pattern)
  16. 字符编码:Unicode和UTF-8之间的关系
  17. OGC标准服务 WMS WCS WFS WPS
  18. Matplotlib学习---用seaborn画联合分布图(joint plot)
  19. centos 6.5 安装jdk1.8
  20. Python基础之面向对象进阶二

热门文章

  1. 『无为则无心』Python函数 — 26、Python函数参数的传递方式
  2. 在使用XStream时没有processAnnotations方法
  3. Centos下安装最新版本Git
  4. 63. Unique Paths II 动态规划
  5. python 字符串 增、删、改、查基本操作
  6. 由ctf来看java报错的危害
  7. CURL 实战下载
  8. Selenium自动化测试框架Ride使用XLRD对于Excel测试数据的管理和操作
  9. File类与常用IO流第十章——序列化流
  10. python -- 正则表达式&amp;re模块(转载)