反斜杠问题

与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,

Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\\”表示。同样,匹配一个数字的”\\d”可以写成r”\d”。有了原生字符串,妈妈也不用担心是不是漏写了反斜杠,写出来的表达式也更直观勒。

获得这个匹配模式:需要利用re.compile方法就可以

  1. __author__ = 'CQC'
  2. # -*- coding: utf- -*-
  3.  
  4. #导入re模块
  5. import re
  6.  
  7. # 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串”
  8. pattern = re.compile(r'hello')
  9.  
  10. # 使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
  11. result1 = re.match(pattern,'hello')
  12. result2 = re.match(pattern,'helloo CQC!')
  13. result3 = re.match(pattern,'helo CQC!')
  14. result4 = re.match(pattern,'hello CQC!')
  15.  
  16. #如果1匹配成功
  17. if result1:
  18. # 使用Match获得分组信息
  19. print result1.group()//默认为组0
  20. else:
  21. print '1匹配失败!'
  22.  
  23. #如果2匹配成功
  24. if result2:
  25. # 使用Match获得分组信息
  26. print result2.group()
  27. else:
  28. print '2匹配失败!'
  29.  
  30. #如果3匹配成功
  31. if result3:
  32. # 使用Match获得分组信息
  33. print result3.group()
  34. else:
  35. print '3匹配失败!'
  36.  
  37. #如果4匹配成功
  38. if result4:
  39. # 使用Match获得分组信息
  40. print result4.group()
  41. else:
  42. print '4匹配失败!'

属性:
1.string: 匹配时使用的文本  是原来的文本~

2.re: 匹配时使用的Pattern对象。

4.endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
5.lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。

# 匹配如下内容:单词+空格+单词+任意字符

m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello world!')
三个分组
1 \w+所有字母  hello
2  \w+所有字母 world 
3 分组名字为sign  内容为任意字符的*所有(集合)

match()函数只检测re是不是在string的开始位置匹配,search()会扫描整个string查找匹配,

  1. match = re.match(pattern,'hello world!')
  2. if match:
  3. # 使用Match获得分组信息
  4. print match.group()
  5. else:print "NO"
  6. ### 输出 ###
  7. # world
  8. match = re.search(pattern,'hello world!')
  9. if match:
  10. # 使用Match获得分组信息
  11. print match.group()
  12. else:print "NO"
  13.  
  14. match saerch 区别

3)re.split(pattern, string[, maxsplit])

以数字(可以多个数字)为分割 ,maxsplit=2 表示分割两次(不是两部分)指的是用“数字”分割2次(这里有4个数字)

  1. pattern = re.compile(r'\d+')
  2. print re.split(pattern,'one1two2three3four4')
  3.  
  4. ### 输出 ###
  5. # ['one', 'two', 'three', 'four', '']
  6.  
  7. pattern = re.compile(r'\d+')
  8. print re.split(pattern,'one1two2three3four4',)
  9.  
  10. ### 输出 ###
  11. # ['one', 'two', 'threefour']
  12.  
  13. re.split(pattern, string[, maxsplit])

(4)re.findall(pattern, string[, flags])见名思议 find all match 找出所有匹配的,这个应该是很常用的语句吧~

  1. pattern = re.compile(r'\W+')
  2. print re.findall(pattern, '/one1two*2three3four4!')
  3.  
  4. ### 输出 ###
  5. # ['/', '*', '!']

\w:代表字母数字下划线.

(6)re.sub(pattern, repl, string[, count])

对匹配的文本 用repl 替换  这里的\2(\id)代表的是第二个分组   0分组是整个文本!!!第一个左括号是第一个分组

  1. pattern = re.compile(r'(\w+) (\w+)')
  2. s = 'i say, hello world!'<br>你看这里的第一个分组就是i<br>第二个分组是say
  3.  
  4. print re.sub(pattern,r'\2 \1', s)<br>用say i替换i say<br><br>

在这个例子里的 func函数用的挺巧妙

.title是使得第一字母大写?~~?!

  1. import re
  2.  
  3. pattern = re.compile(r'(\w+) (\w+)')
  4. s = 'i say, hello world!'
  5.  
  6. print re.sub(pattern,r'\2 \1', s)
  7.  
  8. def func(m):
  9. return m.group()<span style="color: #ff6600;">.title()</span> + ' ' + m.group().title()
  10.  
  11. print re.sub(pattern,func, s)
  12.  
  13. ### output ###
  14. # say i, world hello!
  15. # I Say, Hello World!

re.subn(pattern, repl, string[, count])

只是输出结果中有一个替换次数

输出结果对比

say i, world hello!
I Say, Hello World!
('say i, world hello!', 2)
('I Say, Hello World!', 2)

phython正则表达式 Python Re模块的更多相关文章

  1. python正则表达式 Python Re模块

    最近在学python 练习的时候随手写的,方便以后自己参考~如果能对其他同学有所帮助就再好不过了 希望大家指正哦~  我会随时整理的,先这样~ 正则表达式 1.元字符([ ]),它用来指定一个char ...

  2. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  3. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  4. 【转】Python之正则表达式(re模块)

    [转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...

  5. 【Python爬虫】正则表达式与re模块

    正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...

  6. Python正则表达式与re模块

    在线正则表达式测试 http://tool.oschina.net/regex/ 常见匹配模式 模式 描述 \w 匹配字母数字及下划线 \W 匹配非字母数字下划线 \s 匹配任意空白字符,等价于 [\ ...

  7. Python与正则表达式[0] -> re 模块的正则表达式匹配

    正则表达式 / Regular Expression 目录 正则表达式模式 re 模块简介 使用正则表达式进行匹配 正则表达式RE(Regular Expression, Regexp, Regex) ...

  8. python 正则表达式re使用模块(match()、search()和compile())

    摘录 python核心编程 python的re模块允许多线程共享一个已编译的正则表达式对象,也支持命名子组.下表是常见的正则表达式属性: 函数/方法 描述 仅仅是re模块函数 compile(patt ...

  9. python正则表达式之re模块方法介绍

    python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...

随机推荐

  1. RabbitMQ 的行为艺术

    RabbitMQ 的行为艺术 目录 简介 环境搭建 示例一:简单的 Hello World 示例二:发布/订阅模式 尝试发现 - 新物种 EasyNetQ 简介 RabbitMQ:一个消息系统,基于 ...

  2. Winform常用知识总结

    Label中的文字自动换行 设置MaximumSize的width为正确的值,设置height为0,设置AutoSize为true. 绘制线条 放置一个Panel,设置size的高度为1,设置Bord ...

  3. 【python】 json.dumps() json.dump()的区别

    以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成s ...

  4. BZOJ4476 送礼物

    这道题真是有趣呀. 其实就是一个分数规划问题,用一个二分加log来得去掉分母. 分四种情况讨论 1.lenth > L && num ( max ) > num ( min ...

  5. [洛谷P3690]【模板】Link Cut Tree (动态树)

    题目大意:给定$n$个点以及每个点的权值,要你处理接下来的$m$个操作.操作有$4$种.操作从$0到3编号.点从1到n编号. $0,x,y$:代表询问从$x$到$y$的路径上的点的权值的$xor$和. ...

  6. BZOJ 1030 文本生成器 | 在AC自动机上跑DP

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1030 题解: 鸽 #include<cstdio> #include<al ...

  7. [Leetcode] Copy list with random pointer 对带有任意指针的链表深度拷贝

    A linked list is given such that each node contains an additional random pointer which could point t ...

  8. http get post 参数校验

    spring boot 常见http get ,post请求参数处理   在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台 ...

  9. Asp.net MVC Combres的简单用法

    第一步:添加nuget包 [1]添加 nuget包后,会自动在 webconfig里面 添加配置文件(不用改) <section name="dotless" type=&q ...

  10. css属性选择器应用

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...