【直接上代码】

#coding=utf-8
#1、先将正则表达式的字符串形式编译为Pattern实例

#2、使用Pattern实例处理文本并获得匹配结果

#3、最后使用Match实例获得消息,进行其他操作

import re

# 【1】 re.compile(string[,flag]) 将正则表达式编译成pattern对象

'''
# 【2】re.match(pattern,string[,flags])
# 从输入参数string的开头开始尝试匹配pattern,
# 遇到无法匹配的字符或者已经到达string末尾,立即返回None,反之获取匹配的结果

#将正则表达式编译成pattern对象
pattern = re.compile(r'\d+')
#使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
result1 = re.match(pattern,'192abc')
if result1:
print result1.group()
else:
print '匹配失败1'
result2 = re.match(pattern,'abc192')
if result2:
print result2.group()
else:
print '匹配失败2'
#输出结果--------> 192 匹配失败2 resul2匹配的时候遇到a的时候无法匹配,立即返回None
'''

'''
# 【3】re.search(pattern,string[,flags])
#match()函数只从string的开始位置匹配
#search()会扫描整个string查找匹配

#将正则表达式编译成pattern对象
pattern = re.compile(r'\d+')
#使用re.search匹配文本获得匹配结果,无法匹配时将返回None
result1 = re.search(pattern,'abc192def')
if result1:
print result1.group()
else:
print '匹配失败1'
#运行结果--------> 192
'''

'''
# 【4】re.split(pattern,string[,maxsplit])
#按照能够匹配的子串将string分割后返回 列表
#maxsplit用于指定最大分割次数,不指定则将全部分割
pattern = re.compile(r'\d+')
print re.split(pattern,'A1B2C3D4')
#运行结果-----------> ['A', 'B', 'C', 'D', '']
'''

'''
# 【5】re.findall(pattern,string[,flags])
#搜索整个string,以列表形式返回能匹配的全部子串
pattern = re.compile(r'\d+')
print re.findall(pattern,'A1B2C3D4')
#运行结果----------> ['1', '2', '3', '4']
'''

'''
# 【6】re.finditer(pattern,string[,flags])
#搜索整个string,以迭代器形式返回能匹配的全部Match对象
pattern = re.compile(r'\d+')
matchiter = re.finditer(pattern,'A1B2C3D4')
for match in matchiter:
print match.group()
#运行结果------>
# 1
# 2
# 3
# 4
'''

'''
# 【7】re.sub(pattern,repl,string[,count])
#使用repl替换string中每一个匹配的子串后返回替换后的字符串。
#当repl是一个字符串时,可以使用 \id 或 \g<id> 、 \g<name> 引用分组,但不能使用编号0.
#当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)
#count用于指定最多替换的次数,不指定时全部替换
p = re.compile(r'(?P<word1>\w+) (?P<word2>\w+)') #使用名称引用
s = 'i say ,hello world!'
print p.sub(r'\g<word2> \g<word1>',s)
p = re.compile(r'(\w+) (\w+)') #使用编号
print p.sub(r'\2 \1',s)
def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print p.sub(func,s)
#输出结果------>
# say i ,world hello!
# say i ,world hello!
# I Say ,Hello World!
'''

# 【8】re.subn(pattern,string[,count])
#返回 (sub(repl,string[,count]),替换次数)。
s = 'i say ,hello world!'
p = re.compile(r'(\w+) (\w+)')
print p.subn(r'\2 \1',s)
def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print p.subn(func,s)
#运行结果-------->
# ('say i ,world hello!', 2)
# ('I Say ,Hello World!', 2)

【python】python与正则 re的主要用到的方法列举的更多相关文章

  1. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  2. python匹配ip正则

    python匹配ip正则 #!/usr/bin/env python # -*- coding:utf-8 -*- import re ip_str = "asdad1.1.1.1sdfwe ...

  3. 【归纳】正则表达式及Python中的正则库

    正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...

  4. python 爬虫之 正则的一些小例子

    什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是 事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符”,这个“规则字符” 来表达对字符的一种过滤逻辑. 正则并不是pyth ...

  5. Python实例---利用正则实现计算器[FTL版]

    import re # 格式化 def format_str(str): str = str.replace('--', '+') str = str.replace('-+', '-') str = ...

  6. Python中的正则

    regex_lst = [ ('字符组',), ('非打印字符',), ('特殊字符',), ('定位符',), ('限定符',), ('re模块',), ('分组命名',), ('或匹配',), ( ...

  7. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

  8. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  9. 【C++实现python字符串函数库】strip、lstrip、rstrip方法

    [C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...

随机推荐

  1. php Pthread 多线程基本介绍

    我们可以通过安装Pthread扩展来让PHP支持多线程.   线程,有时称为轻量级进程,是程序执行的最小单元.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它与同属 ...

  2. List<T>Distinct 过滤

    public class TestDuplicateDefine : IEqualityComparer<student> { public bool Equals(student x, ...

  3. python 引用计数

    转载:NeilLee(有修改)   一.概述 要保持追踪内存中的对象,Python使用了引用计数这一简单的技术. sys.getrefcount(a)可以查看a对象的引用计数,但是比正常计数大1,因为 ...

  4. 使用R语言-操作data.frame

    1 向一个data.frame指定列插入一列新数据 1.1 插入一列到指定位置 y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8) ...

  5. webscoket通信初步(一)

    只要动手做起来,多投入时间和精力.耐心去研究,以大多人的智商加google,平时遇到的大部分问题我们都是可以自己解决的,大部分的知识我们都是可以掌握的. 我们都知道http协议是单向请求的,无法实现双 ...

  6. extend 与 append 的区别

    >>> A = ['q', 'w', 'e', 'r'] >>> A.extend(['t', 'y']) >>> A ['q', 'w', 'e ...

  7. .NET使用Task动态创建多任务多线程并行程序计算Redis集群keys计算

    Task是一个很好用的多任务处理类,并且通过Task可以对任务进行很好的控制. 下面将通过代码实现Redis集群在使用IServer.keys时通过多任务对多个服务器示例进行并行计算,并对返回key做 ...

  8. elasticsearch 安装(基于java运行环境)

    解压安装包 [root@Aliyun resource]# tar -xvf elasticsearch-5.5.2.tar.gz 添加当前主机的普通账户 [root@Aliyun resource] ...

  9. spring笔记-@Primary注解

    1.问题 当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionExceptio ...

  10. [转][C#]HttpClient 代码示例

    转自:https://www.cnblogs.com/amosli/p/3918538.html 也参考了:https://www.cnblogs.com/ShadowFiend007/p/80668 ...