最近在学python 练习的时候随手写的,方便以后自己参考~如果能对其他同学有所帮助就再好不过了

希望大家指正哦~  我会随时整理的,先这样~

正则表达式

  • 1.元字符([ ]),它用来指定一个character class。所谓character classes就是你想要匹配的字符(character)的集合.字符(character)可以单个的列出,也可以通过"-"来分隔两个字符来表示一个范围。例如,[abc]匹配a,b或者c当中任意一个字符,[abc]也可以用字符区间来表示---[a-c].如果想要匹配单个大写字母,你可以用[A-Z]。
  • 元字符(metacharacters)在character class里面不起作用,如[akm$]将匹配"a","k","m","$"中的任意一个字符。在这里元字符(metacharacter)"$"就是一个普通字符。
  • 2.元字符[^]. 你可以用补集来匹配不在区间范围内的字符。其做法是把"^"作为类别的首个字符;其它地方的"^"只会简单匹配 "^"字符本身。例如,[^5] 将匹配除 "5" 之外的任意字符。同时,在[ ]外,元字符^表示匹配字符串的开始,如"^ab+"表示以ab开头的字符串。

反斜杠问题

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

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

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

__author__ = 'CQC'
# -*- coding: utf-8 -*- #导入re模块
import re # 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串”
pattern = re.compile(r'hello') # 使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
result1 = re.match(pattern,'hello')
result2 = re.match(pattern,'helloo CQC!')
result3 = re.match(pattern,'helo CQC!')
result4 = re.match(pattern,'hello CQC!') #如果1匹配成功
if result1:
# 使用Match获得分组信息
print result1.group()//默认为组0
else:
print '1匹配失败!' #如果2匹配成功
if result2:
# 使用Match获得分组信息
print result2.group()
else:
print '2匹配失败!' #如果3匹配成功
if result3:
# 使用Match获得分组信息
print result3.group()
else:
print '3匹配失败!' #如果4匹配成功
if result4:
# 使用Match获得分组信息
print result4.group()
else:
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查找匹配,

pattern = re.compile(r'world')
match = re.match(pattern,'hello world!')
if match:
# 使用Match获得分组信息
print match.group()
else:print "NO"
### 输出 ###
# NO match = re.search(pattern,'hello world!')
if match:
# 使用Match获得分组信息
print match.group()
else:print "NO"
import re
#输出world

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

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

pattern = re.compile(r'\d+')
print re.split(pattern,'one1two2three3four4') ### 输出 ###
# ['one', 'two', 'three', 'four', ''] pattern = re.compile(r'\d+')
print re.split(pattern,'one1two2three3four4',2) ### 输出 ###
# ['one', 'two', 'threefour']

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

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

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

搜索string,返回一个顺序访问每一个匹配结果

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

  

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

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

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

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

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

import re

pattern = re.compile(r'(\w+) (\w+)')
s = 'i say, hello world!' print re.sub(pattern,r'\2 \1', s) def func(m):
return m.group(1).title() + ' ' + m.group(2).title() print re.sub(pattern,func, s) ### output ###
# say i, world hello!
# 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)


SET(不重复)

s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
#创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素
s是set集合创建的一个对象

s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
print 'Bart' in s

输出:true

可以用“in”来判

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

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

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

  2. Python正则表达式与re模块介绍

    Python中通过re模块实现了正则表达式的功能.re模块提供了一些根据正则表达式进行查找.替换.分隔字符串的函数.本文主要介绍正则表达式先关内容以及re模块中常用的函数和函数常用场景. 正则表达式基 ...

  3. python 正则表达式 (重点) re模块

    京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示.假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误.这个功能是怎么实现的呢?假如现在你用python写一段 ...

  4. Python正则表达式与hashlib模块

    菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...

  5. python正则表达式与re模块-02

    正则表达式 正则表达式与python的关系 # 正则表达式不是Python独有的,它是一门独立的技术,所有的编程语言都可以使用正则 # 但要在python中使用正则表达式,就必须依赖于python内置 ...

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

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

  7. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

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

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

  9. python 正则表达式与re模块

    一.正则表达式 用途 用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. #### 简单地说 就是用于字符串匹配的 字符组 在 ...

随机推荐

  1. 如何在python项目中写出像Django中一样功能的settings

    一  核心文件目录结构 二  实现代码 resdme: 在实现此功能主要用到的知识点及模块: 1.反射 3.内置方法dir # 全局配置 NAME = 'root' # 用户配置 NAME = 'pe ...

  2. K-medodis聚类算法MATLAB

    国内博客,上介绍实现的K-medodis方法为: 与K-means算法类似.只是距离选择与聚类中心选择不同. 距离为曼哈顿距离 聚类中心选择为:依次把一个聚类中的每一个点当作当前类的聚类中心,求出代价 ...

  3. pytorch中的cat、stack、tranpose、permute、unsqeeze

    Cat 对数据沿着某一维度进行拼接.cat后数据的总维数不变. 比如下面代码对两个2维tensor(分别为2*3,1*3)进行拼接,拼接完后变为3*3还是2维的tensor. import torch ...

  4. 在android上跑 keras 或 tensorflow 模型

    https://groups.google.com/forum/#!topic/keras-users/Yob7mIDmTFs http://talc1.loria.fr/users/cerisara ...

  5. centos7命令3

    查看监听的端口 netstat -lntp 检查端口被哪个进程占用 netstat -lnp|grep 8080 查看当前文件夹大小 du -sh 查看当前文件夹各目录大小 du -sh ./* 查看 ...

  6. 微信小程序组件toast

    操作反馈toast:官方文档 Demo Code: var toastNum = 2 var pageData = {} pageData.data = {} for(var i = 0; i < ...

  7. [Windows Powershell]-学习笔记(4)

    Powershell 定义变量 在powershell中变量名均是以美元符"$"开始,剩余字符可以是数字.字母.下划线的任意字符,并且powershell变量名大小写不敏感($a和 ...

  8. http协议中post方法发出请求

    package com.chinaums.szm.test.base.igoodful; import com.fasterxml.jackson.databind.ObjectMapper;impo ...

  9. Straight Master Gym-101775J (思维+差分)

    题意:给出N种类的数量,求是否可以把N种牌按3-5张连续的顺子打出,顺子必须连续. 分析:相当于把这个序列分成若干长度为[3,5]的区间,当然其实分成若干段大于3的区间即可.因为大于5的区间又可以分拆 ...

  10. httpfs的使用

    在项目中使用到hdfs作为存储,为了在不同的节点加载hdfs上的数据,我们使用nfsv3服务,在客户端使用 root来mount hdfs上的数据到本地,然后把本地的数据发到hdfs上,因为这个我们的 ...