字符串函数replace:

    #string.replace:
#字符串的replace方法:替换子串,不改变原来的字符串
s = "broad road"
#打印出来会发现不单单是road被替换了,broad也变了
#这是因为broad也包含road,replace方法
print s.replace('road', 'rd.')

原始字符串 r'string':

    #原始字符串:只要在普通字符串前加上 r 就可以
#这样做是表明这个字符串中的所有字符都不转义,避免反斜线灾难
print r'this is a \t\n string'
#原始字符串在正则表达式中很重要

Python正则表达式:

   #Python的正则包
#$:匹配字符串末尾的,相对应的匹配字符串开头的是 ^
s = 'broad road'
#re.sub(pattern, str1, str2):将str2中符合pattern的串替换为str1
print re.sub('road$', 'rd.', s)
#但如果末尾是broad呢,很遗憾,也会被替换
s = 'broad broad'
print re.sub('road$', 'rd.', s) #\b:单词的边界必须在这里
#这样不论road出现在哪里,只要是整个的单词就会匹配
s = 'broad road room1'
print re.sub(r'\broad\b', 'rd.', s)

re.search(pattern, string): pattern正则表达式 string 要匹配的字符

    import re
#re.search(pattern, string):re包重要的函数
#pattern:正则 string:要匹配的字符串
#返回值:不能匹配返回None 匹配成功返回一堆描述,反正不是None,根据一切皆对象姑且称之为'匹配成功对象'
#^匹配开始,$匹配结束 ?匹配0个或1个M
pattern = '^M?M?M?$'
print re.search(pattern, 'M')
print re.search(pattern, 'MMMM') #|匹配前后两个表达式,先匹配左边的表达式,一旦成功匹配就不去匹配右边的表达式。
#记住(A|B|C)含义是:精确匹配ABC中的一个,匹配一个后便不再匹配其他的了
#如果不加括号,则其作用范围就是整个正则表达式
pattern = '^M?M?M?(CM|CD|D?C?C?C?)$'
print re.search(pattern, 'MCM')
print re.search(pattern, 'MCMC') #{m}匹配前面字符m次
#{m, n}匹配前面的字符m次至n次,m n都可以为0
pattern = '^M{0,3}$'
print re.search(pattern, 'M')
print re.search(pattern, 'MMMM')

松散正则表达式: re.VERBOSE 、 re.compile().search().groups()

    #松散正则表达式re.VERBOSE
#1忽略空白:比如空格制表符回车等,也就是说可以在表达式的任意地方添加任意多的空白。
#2忽略注释:这样就可以在合适的位置加上注释提高可读性。
pattern = """
^ #在这里匹配开始
M{0,3} #匹配0-3个M
(CM|CD|D?C?C?C?) #匹配xxx
$ #在这里匹配结束
"""
#使用松散正则,要给search一个re.VERBOSE表明这是一个松散正则
print re.search(pattern, 'MCM')
print re.search(pattern, 'MCM', re.VERBOSE)
print re.search(pattern, 'MCMC', re.VERBOSE)
#如果要在松散正则中匹配空白而不是被忽略掉,就要用转移字符来做
pattern = """
ab\ cd
"""
#这表示要在b和c之间匹配一个空格
print re.search(pattern, 'ab cd', re.VERBOSE) #compile 和 groups 简单使用
   #re.compile():接受一个正则表达式返回一个正则对象
pattern = re.compile(r'^(\d{3})-(\d{3})-(\d{4})$')
#正则对象的search()方法匹配同re.search()类似,接受一个正则表达式,匹配失败返回None,成功返回'匹配成功对象'
   #'匹配成功对象'.gourps()返回一个tuple,元素对应于前面正则表达式中的组。一个小括号即使一个组
   #匹配成功返回的'匹配成功对象'才能调用groups,因为匹配失败返回None,是没有groups()函数的
print pattern.search('800-555-1212').groups()

devi into python 笔记(六)正则表达式 原始字符串的更多相关文章

  1. Python:笔记(6)——正则表达式

    Python:笔记(6)——正则表达式 re模块 re模块用于在字符串中执行基于正则表达式模式的匹配和替换. 使用原始字符串 正则表达式使用 \ 对特殊字符进行转义,比如,为了匹配字符串 ‘pytho ...

  2. devi into python 笔记(七)locals与globals 字典格式化字符串 字符集

    locals()与globals(): """ locals:局部命名空间 globals:全局命名空间 都是以dictionary的形式保存的,变量名是键,变量值是值 ...

  3. devi into python 笔记(四)python的类

    import 与 from ... import ...: #types只是一个包,FunctionType只是这个包里的一个函数.这里用它来演示 import types #如果要用Function ...

  4. devi into python 笔记(三)callable getattr lambda表达式

    常用的函数:callable():如果所给参数是可调用的,返回True 不可调用返回Fasle.这里指的是否能调用说的是方法.类方法等有doc string的东西,一个单纯的字符串等就不算了. imp ...

  5. devi into python 笔记(二)元组 变量声明 和列表解析

    元组tuple: 类似list,只是tuple是不可变的list.类似java的String都是不可改变的.注意:tuple没有方法(有待考证),不可以像list那样那个list.pop 或者list ...

  6. python笔记03:使用字符串

    3.1 基本字符串操作: 所有的标准序列操作(索引,分片,乘法,判断成员资格,求长度,取最小值,取最大值)对于字符串同样有效.但是,请记住:字符串都是不可变的 3.2 字符串格式化:精简版 字符串格式 ...

  7. 在Python中使用正则表达式去掉字符串里的html标签

    有时候会获得一些带html标签的字符串,需要把html标签去掉,获得干净的字符串,这时候可以使用正则表达式. 代码如下: import re htmeString = '''<ul id=&qu ...

  8. python笔记(2)--字符串

    一.创建字符串 使用 '' , "" , ''' 和 """ 来创建字符串 var1 = 'hello, world' var2 = "ja ...

  9. devi into python 笔记(五)异常 文件操作 sys os glob模块简单实用

    异常: Java异常: try catch块处理异常,throw引发异常. Python异常: try except块处理异常,raise引发异常. 异常如果不主动处理,则会交给Python中的缺省处 ...

随机推荐

  1. struts 文件上传下载

    上传 1.编写上传action类 UploadAction.java package jxf.b_upload; import java.io.File; import java.io.IOExcep ...

  2. MySQL分库分表备份脚本

    MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...

  3. sql 自身连接

    "select table1.field1, table2.field1 from table table1, table table2 where table1.id=table2.par ...

  4. yarn资源管理器高可用性的实现

    资源管理器高可用性 . The ResourceManager (RM) is responsible for tracking the resources in a cluster, and sch ...

  5. 由 OR 引起的死循环

    在客商迁移测试时,程序一旦开始执行就不能自动停止.只能通过手动中断应用服务器的进程来停止.检查迁移的一个表,这个表迁移前没有数据,迁移最多会插入3w条左右数据,但是迁移过程执行2个多小时候再看,已经有 ...

  6. STM32学习内容和计划

    一.STM32学习内容(流程) 1.学习STM32开发流程 ①MDK使用.建立工程.调试等 ②库开发方法 2.学习STM32常用外设开发 ①GPIO ②中断 ③定时器 ④串口 ⑤CAN 3.学习STM ...

  7. jquery实现抽奖

    用jquery实现抽奖小程序   用jquery实现抽奖小程序 这些日子,到处都可以看到关于微信小程序的新闻或报到,在博客园中写关于微信小程序的也不少.但是今天我要说的不是微信小程序,而是用简单的jq ...

  8. 【Python网络爬虫三】 爬去网页新闻

    学弟又一个自然语言处理的项目,需要在网上爬一些文章,然后进行分词,刚好牛客这周的是从一个html中找到正文,就实践了一下.写了一个爬门户网站新闻的程序 需求: 从门户网站爬取新闻,将新闻标题,作者,时 ...

  9. 查看sqlserver数据库的端口号

    最近正在用sqlserver作为java的数据库进行开发,在写连接字符串的时候,想起一个问题,怎么查找sqlserver的端口号呢?有两种方法 1,用存储过程 --查询端口号exec sys.sp_r ...

  10. AppStore IPv6-only审核被拒原因分析及解决方案-b

    自2016年6月1日起,苹果要求所有提交App Store的iOS应用必须支持IPv6-only环境,背景也是众所周知的,IPv4地址已基本分配完毕,同时IPv6比IPv4也更加高效,向IPv6过渡是 ...