re 模块 常规方法使用
前情提要:
re模块主要用于正则,用的好了秒杀一切匹配的规则,这里主要是介绍基本用法
一:元字符
1:\w 匹配字符,包含中文,数字或下划线
l ='早乙女露依 123 是我的 321 心目中的 222 女神 666 女神 '
# print(re.findall('\w',l)) # ['早', '乙', '女', '露', '依', '是', '我', '的', '心', '目', '中', '的', '女', '神', '女', '神']
2:\W 匹配非字符,包含中文,数字或下划线
l ='早乙女露依 123 是我的 321 心目中的 222 女神 666 女神 '
# print(re.findall('\W',l)) #[' ', ' ', ' ', ' ', ' ', ' ', ' ']
3:\s 匹配任意的空白符
#\s 匹配任意的空白符
# print(re.findall('\s',l)) #[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
4:\S 匹配任意的空白符
#\S 匹配任意非空白符
# print(re.findall('\S',l)) #['早', '乙', '女', '露', '依', '1', '2', '3', '是', '我', '的', '3', '2', '1', '心', '目', '中', '的', '2', '2', '2', '女', '神', '6', '6', '6', '女', '神']
5:\d 匹配任意的数字
#\d 匹配数字
# print(re.findall('\d',l)) #['1', '2', '3', '3', '2', '1', '2', '2', '2', '6', '6', '6']
6:\D匹配任意的非数字
#\D 匹配非数字
# print(re.findall('\D',l)) #['早', '乙', '女', '露', '依', ' ', ' ', ' ', '是', '我', '的', ' ', ' ', '心', '目', '中', '的', ' ', ' ', '女', '神', ' ', ' ', '女', '神', ' ']
7:\A ^ 匹配任意字符串的开始
# \A ^ 匹配字符串的开始
# print(re.findall('\A早',l)) #['早']
8:\Z $ 匹配任意字符串的结尾
#\Z $ 匹配字符串的结尾
# print(re.findall('神 $',l)) #['神 ']
9: \t \ n 匹配任意空白符
#\n \t 匹配空白符
# print(re.findall('\n',l))
二:重复匹配
1: . 匹配任意字符
#. 匹配任意字符
# print(re.findall('早.女',l)) # ['早乙女']
2: ? 匹配0个或者一个左面的定义规则内容
#? 匹配0个或者1一个由左面字符定义的片段
# l ='abbzab abb aab'
# print(re.findall('a?b',l))
3: * 匹配0 个或者多个左面的定义规则内容
#* 匹配0个或者多个左面字符表达式
# l ='b ab aaaaaab abbbabaabbabbba'
# print(re.findall('a*b',l)) #['b', 'ab', 'aaaaaab', 'ab', 'b', 'b', 'ab', 'aab', 'b', 'ab', 'b', 'b']
4: + 匹配1 个或者多个左面的定义规则内容
# +匹配1个或者多个左面字符表达式
# l ='b ab aaaaaab abbbabaabbabbba'
# print(re.findall('a+b',l)) #['ab', 'aaaaaab', 'ab', 'ab', 'aab', 'ab']
5: {n,m} 匹配n 至m 个左面的定义规则内容
#{n,m} 匹配n至m个左面字符的表达式
# l ='b ab aaaaaab abbbabaabbabbba'
# print(re.findall('a{4,5}b',l)) #['aaaaab']
6: .* 贪婪匹配 从头匹配到尾巴
# .* 贪婪匹配 从头匹配到尾巴
# l ='b ab aaaaaab abbbabaabbabbba'
# print(re.findall('a.*b',l)) # ['ab aaaaaab abbbabaabbabbb']
7: .*? 非贪婪匹配 从头匹配到尾巴
#.*?非贪婪匹配 ,从头匹配到尾巴
# l ='b ab aaaaaab abbbabaabbabbba'
# print(re.findall('a.*?b',l)) #['ab', 'aaaaaab', 'ab', 'ab', 'aab', 'ab']
8:[ ] 加入参数 匹配
[] 加入参数
# print(re.findall('a[abc]b','aab abb acb aaacb')) #['aab', 'abb', 'acb', 'acb']
9:[0-9] 加入数字 匹配
#[0-9]
# print(re.findall('a[0-9]b','a2b a3b a0b aaf aab')) #['a2b', 'a3b', 'a0b']
10:[a-z] 加入小写字母匹配
#[a-z]
# print(re.findall('a[a-z]b','abb bcb acb afb asssddb')) #['abb', 'acb', 'afb']
11:[A-Z] 加入大写字母匹配
#[A-Z]
# print(re.findall('a[A-Z]b','aAb aCb Abb ABB')) #['aAb', 'aCb']
12:[a-zA-Z] 注意不能倒过来, 需要小的在前面
# print(re.findall('a[a-zA-Z]b','aAb aCb Abb ABB')) #['aAb', 'aCb']
13: () 定制一个规则, 将满足的规则匹配出来
# print(re.findall('(.*?)_b','wo_b chi_b hhe_b fas adadas_bd')) #['wo', ' chi', ' hhe', ' fas adadas']
三: 常用方法总结
1:search 找到第一个规则,找不到则返回None
对象.group() 调用
# print(re.search('alex','re alex alex 太白').group()) #alex
# print(re.search('alex','re aaleex aaleex 太白')) #None
2:match 匹配开头文字,如果匹配不到就None
# print(re.match('alex','alex alex 太白').group()) #alex
# print(re.match('alex','re alex alex 太白')) #None
3:spilt 切割
# s1 = 'wusir;太白,alex|日天!小虎'
# print(re.split(';,|!',s1)) #['wusir;太白,alex|日天', '小虎']
4:compile() 制定一个规则
# re.I(re.IGNORECASE)
# 使匹配对大小写不敏感
#
# re.L(re.LOCAL)
# 做本地化识别(locale-aware)匹配
#
# re.M(re.MULTILINE)
# 多行匹配,影响 ^ 和 $
#
# re.S(re.DOTALL)
# 使 . 匹配包括换行在内的所有字符
#
# re.U(re.UNICODE)
# 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
#
# re.X(re.VERBOSE)
# 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
re 模块 常规方法使用的更多相关文章
- Maven提高篇系列之(一)——多模块 vs 继承
这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...
- ABP新增模块可能遇到的问题
当我们新增一个模块时: public class SSORedisModule: AbpModule { //public override void PreInitialize() //{ // b ...
- 爬虫与request模块
一.爬虫简介 1.介绍 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁. ...
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- python2.0_day18_Django自带的用户认证模块的使用
用户验证我们基于一个项目来学习利用Django框架中的user表实现用户认证Django练习小项目:学员管理系统设计开发 项目需求: 1.分讲师\学员\课程顾问角色, 2.学员可以属于多个班级,学员成 ...
- JS框架设计之加载器所在路径的探知一模块加载系统
1.要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介,但用户在require是都用ID,我们需要一个将ID转换为URL的方法,思路很简单,强加个约定,URL的合成规则是为: ...
- Maven 梳理 -多模块 vs 继承
Maven提高篇系列之(一)——多模块 vs 继承 这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plu ...
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
随机推荐
- python3菜鸟教程
http://www.runoob.com/python3/python3-class.html
- mybatis调用自定义函数
<select id="getFunction" parameterType="int" resultType="string"> ...
- Linux中bash编程
bash编程也叫shell编程 预定义变量 $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...
- 饮品类App原型制作分享-WineRatingsPlus
WineRatingsPlus是一款关于红酒的App应用.它帮助你在用餐.聚会或任何场合选择葡萄酒时,都能方便的得到专家意见.同时,它也能帮助鉴赏家和感兴趣的人对葡萄酒更多的了解和选择. 在这款Moc ...
- 如何用Python实现常见机器学习算法-3
三.BP神经网络 1.神经网络模型 首先介绍三层神经网络,如下图 输入层(input layer)有三个units(为补上的bias,通常设为1) 表示第j层的第i个激励,也称为单元unit 为第j层 ...
- 阿里云服务器ECS按ctrl+alt+delete无法登录
今天在使用阿里云服务器远程桌面的时候发现怎么也进入不了,远程桌面无法连接,于是想到了在阿里云服务器管理控制台可以使用连接管理终端进行远程桌面连接,下面详细介绍阿里云服务器操作经验. 操作步骤如下 登录 ...
- 数据结构(c语言版)文摘
第一章 绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...
- CodeForces 518A Vitaly and Strings (水题,字符串)
题意:给定两个相同长度的字符串,让你找出一个字符串,字典序在两都之间. 析:这个题当时WA了好多次,后来才发现是这么水,我们只要把 s 串加上,然后和算数一样,该进位进位,然后再和 t 比较就行. 代 ...
- checkbox数据回显问题
一.问题 在用复选框的时候,最常用的无非就是全选,全不选,数据回显等问题!要做的比较灵活!最近做项目的时候,就遇到这些问题,下面从js和JQueyr两方面解决一下全选,全不选,数据回显的问题. 二.H ...
- SOA和微服务到底是什么关系?
SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上的区别,两者说到底都是对外提供接口的一种架构设计方式.我倒觉得微服务其实就是随着互联网的发展,复杂的平台.业务的出现, ...