当前位置: 首页 > news >正文

python之路之正则表达式

 匹配格式

^       匹配字符串的开头
$ 匹配字符串的结尾
. 除了换行符外的所有字符
[...] 用来表示一组字符,,单独列出:[amk]匹配'a','m'或'k'
[^..] 不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
* 匹配0个或多个
+ 匹配1个或多个
? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n,} 精确匹配n个前面的表达式
{n,m} 匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a|b 匹配a或b
() 匹配括号内的表达式,也表示一个组
\w 匹配字母数字
\W 匹配非字母数字
\s 匹配任意空白符
\S 匹配任意非空白符
\d 匹配任意数字
\D 匹配任意非数字
\A 匹配字符串开始
\Z 匹配字符串结束,如果存在换行,只匹配换行前的结束字符串
\z 匹配字符串结束
\G 匹配最后匹配完成的位置
\b 匹配一个单词的边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界,'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'
\n 匹配一个换行符
\t 匹配一个制表符
\1..\9 匹配第n个分组的子表达式

正则表达式常用5种操作:
re.match(pattern,string) #从字符串的开头开始匹配,匹配必须与字符串的开头一致,返回一个匹配值
re.search(pattern,string) #从字符串的任意位置匹配,返回一个匹配值
re.split() #按匹配分隔字符串,默认为空格
re.findall(pattern,string) #找到所有的匹配,返回列表
re.sub(pattern,repl,string,count) #找到所有匹配,并替换掉

一:match的使用方法:从字符串的开头开始匹配

 

贪婪匹配:.* 使自己尽量获取最多的值
与非贪婪匹配:.*? 使大家都可以获取最多的值

 

匹配模式:
S可以使.匹配新行,即使.可以匹配任意字符
import re

content = """Hello 1234567 World_This
          is a Regex Demo"""
result = re.match("^He.*?(\d+).*?Demo$",content,re.S)

print(result.group())
print(result.group(1))

结果:
vHello 1234567 World_This
          is a Regex Demo
1234567

match的缺点:从字符串的开头匹配,开头必须一致

二、search:在字符串的任意位置查找,返回一个匹配值

import re

content = """Extra strings Hello 1234567 World_This is a Regex Demo Exit"""
result = re.search("He.*?(\d+).*?Demo",content)

print(result.group())
print(result.group(1))

结果:
Hello 1234567 World_This is a Regex Demo
1234567

三、sub:查找并替换



 其它链接:http://blog.csdn.net/whycadi/article/details/2011046

      https://www.cnblogs.com/whaozl/p/5462865.html

转载于:https://www.cnblogs.com/kongzhagen/p/5460442.html

相关文章:

  • 水平方向瀑布流
  • log4j配置概要
  • [Assignment] C++1
  • linux之GDB常用命令汇总
  • uva1368DNA consensus string统计
  • static关键字的使用总结
  • 设计模式学习-原型模式
  • Centos 基础开发环境搭建之Maven私服nexus
  • HDU 2098 分拆素数和
  • 设计模式——9.装饰模式
  • unable to start the virtual device;Genymotion启动安卓模拟器出错
  • MapReduce编程job概念原理
  • 转载 asp.net的Request.ServerVariables参数说明
  • Extjs 学习总结-代理
  • consul笔记
  • 分享的文章《人生如棋》
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • angular2 简述
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS7 安装JDK
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JAVA并发编程--1.基础概念
  • js递归,无限分级树形折叠菜单
  • python docx文档转html页面
  • RxJS: 简单入门
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • yii2权限控制rbac之rule详细讲解
  • 理解在java “”i=i++;”所发生的事情
  • 区块链技术特点之去中心化特性
  • 删除表内多余的重复数据
  • 思维导图—你不知道的JavaScript中卷
  • 微服务核心架构梳理
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 2017年360最后一道编程题
  • gunicorn工作原理
  • ​Python 3 新特性:类型注解
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (13)Hive调优——动态分区导致的小文件问题
  • (20050108)又读《平凡的世界》
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Python第六天)文件处理
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分布式缓存)Redis持久化
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (算法)求1到1亿间的质数或素数
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转载)hibernate缓存
  • .Net Web项目创建比较不错的参考文章
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • [ 数据结构 - C++]红黑树RBTree
  • [100天算法】-实现 strStr()(day 52)
  • [BZOJ] 2044: 三维导弹拦截