python正则表达式知识预备

正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ "。

上面的写法是不是觉得很麻烦,为了使正则表达式具有更好的可读性,Python特别设计了原始字符串(raw string),需要提醒你的是,在写文件路径的时候就不要使用raw string了,这里存在陷阱。raw string就是用'r'作为字符串的前缀,如 r"\n":表示两个字符"\"和"n",而不是换行符了。Python中写正则表达式时推荐使用这种形式。

问题:如何匹配到‘\com’

# r9 = re.search('\\\\', 'www.run\comoob')
# print(r9) #匹配到‘\’ '\\\\' python 将其翻译为'\\' re 模块将其编译为'\'

上面太麻烦了,明显不符合实际操作,看下面的:

r10 = re.search(r'\\com', 'www.run\comoob')   #加r , 表示python 不翻译,re 翻译
print(r10)
#f = open("c:\abc.txt")   #错误  应该是f = open("c:\\abc.txt")
r7 = re.search(r'\\com', 'www.run\comoob') #注意:匹配到'\com' 翻译到屏幕是'\\com'
print(r7)

学习正则表达式

接下来系统学习正则表达式,文章有点长,希望不懂的同学可以耐心看下去,我会多举例的

先大致看下,后面会举例:

字符:

  . 匹配除换行符以外的任意字符
  \w 匹配字母或数字或下划线或汉字
  \s 匹配任意的空白符
  \d 匹配数字
  \b 匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

  * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

正则表达式本身就是小型编程语言,使用之前肯定要先导入啦,下面实例默认都是导入的。

一、了解findout,及字符
   1. findout  把匹配结果通过列表返回
r =re.findall('zcl', 'fzclfjfrijzclfeizcfj')
print(r) #['zcl', 'zcl']
   2.   .  匹配到除换行符以外的任一个字符
r1 =re.findall('z.l', 'fzolfjfrijzclfeizcfj')
print(r1) #['zol', 'zcl']
r1 =re.findall('z.l', 'fz\nlfjfrijzclfeizcfj')
print(r1) #['zcl']

3.  ^ (shift+6)区配到以 xx字符开头

r2 =re.findall('^z.l', 'fz\nlfjfrijzclfeizcfj')
print(r2) #[]
r3 =re.findall('^z.l', 'zcllfz\nlfjfrijzclfeizcfj')
print(r3) #['zcl']

4.   $ 匹配到以xx结束的字符

r4 =re.findall('z.l$', 'zcllfz\nlfjfrijzclfeizcfj')
print(r4) #[]
r5 =re.findall('z.l$', 'zcllfz\nlfjfrijzclfeizcfjzcl')
print(r5) #['zcl']

  5.   * 区配*前面的字符0到多次

     +  重复一次或更多次
r6 =re.findall('z.*l', 'zcgfchthllfz\nlfjfrijzclfeizcfjzcl')
print(r6) #['zcgfchthll', 'zclfeizcfjzcl'] r7 =re.findall('z.+l', 'zcgfchthfz\nlfjfrijzcfeizcfjzc')
print(r7) #[]

  6.  {n} 重复n次

   {n,m}  重复n到m次
  {n,} 重复n次或更多次
r8 = re.findall('zc{3}l', 'zccclgfchthfz\nlfjfrijzcfeizcfjzc')
print(r8) #['zcccl']

  7. [bc] 匹配b或c

r9 = re.findall('a[bd]c', 'dfjabdcdjfabcdf')
print(r9)

  8. [a-z] 匹配a至z任意一个

r9 = re.findall('a[a-z]c', 'dfjabdcdjfatcdf')
print(r9) #['atc']
  9. [] 里面仍有功能有三个:  [a-z]   [\d]区配数字  [^] 非  
r10 = re.findall('a[^f]d', "afd")
print(r10) #[]
r11 = re.findall('a[^f]d', "ard")
print(r11) #['ard']
r12 = re.findall(r'a\df', "a8f")
print(r12) #['a8f']

欢迎转发!
This is zcl‘s article! Thanks for your support!
文章出处:http://www.cnblogs.com/0zcl
作者:zcl



python之(re)正则表达式上的更多相关文章

  1. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  2. python基础之正则表达式

    正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...

  3. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  4. python的re正则表达式模块学习

    python中re模块的用法   Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...

  5. Python基础之 正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  6. 使用python爬取MedSci上的期刊信息

    使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...

  7. Python系列之正则表达式详解

    Python 正则表达式模块 (re) 简介 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用 ...

  8. 【转载】Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

  9. Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

随机推荐

  1. MySQL学习笔记六:基本DML操作

    1.查询语句,语法如下: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESUL ...

  2. VMware网络设置详解--不错

    我们知道,VMware Workstation提供了很多虚拟设备,利用这些设备,我们除了可以组建典型的桥接网络.仅主机网络.NAT网络外,还能组建复杂的自定义网络.本篇 目的就是让大家认识和掌握VMw ...

  3. CentOS 7.2 yum方式安装MySQL 5.7

    CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变: 下载mysql的源 wget http://dev.mysql.com/get/mys ...

  4. 彻底解决低端安卓手机touchend事件不触发(考虑scroll)

    本次移动端开发时遇见了安卓4.2系统不能触发touchend的问题,有以下需求. 1. 横滑轮播图 2.下拉刷新页面内容 3.body滚动条不能失效 开始在轮播图touchmove事件中阻止了浏览器默 ...

  5. Fragment基础----信息传递

    如何通过activity来访问fragment的信息呢,我们可以通过一个实例来了解. 使用两个Fragment和一个activity管理 效果图: 第一个fragment来表示输入框 第二个fragm ...

  6. iis7.0上发布mvc4.0网站

    步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...

  7. ajax调用本地wcf中的post和get

    我们可以通过jQuery调用本地或者远程的wcf服务,本文讲解的是对本地wcf服务的post和get调用方式. post和get到底有什么区别呢?此处不作详述. 但是,post对请求的数据格式更为严格 ...

  8. PHP实现新浪长链接转化成短链接API

    我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...

  9. 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全

    当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据.如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据. 所以我们需要使用某种安全机制来保证请求的合法.现在最常用的 ...

  10. 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...