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运行之后的. 如果该路径下没有该 ...
随机推荐
- Linux基石【第一篇】VMware上安装Centos及配置
一.安装VMware软件 首先,下载个VMware软件,直接百度:VMware,然后找到可以下载的就可以 然后按步骤安装即可,安装完后,双击打开 二.安装Centos系统 打开VMware虚拟机,然后 ...
- AnimationState
1.1 AnimationClip AnimationClip是Unity3D中播放动画的最基本对象,通过FBX导入的各个动画对象其实就是一个AnimationClip.这个类已关键帧的形式记录了骨骼 ...
- sqlserver datetime的bug?
sqlserver datetime 的毫秒的个位似乎存在bug,只有0.3.7这三个值,比如: 2018-01-20 23:59:59:999会变成2018-01-21 00:00:00.000 2 ...
- 解题报告-603. Consecutive Available Seats
Several friends at a cinema ticket office would like to reserve consecutive available seats. Can you ...
- hive分隔符总结
ascii对应的表Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex ----------------- ...
- 转载:Candy? 在线性时间内求出素数与欧拉函数
转载自:http://www.cnblogs.com/candy99/p/6200660.html 2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB ...
- [OS] 修改屏幕分辨率(用Remote Desktop Connection 或者 用工具:Remote Desktop Connection Manager)
用Remote Desktop Connection Remote Desktop Connection Manager
- linux网络编程模型
1.编程模型 Linux网络编程模型是基于socket的编程模型
- parseInt(string, radix)
参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 10 为基础来解析.如果它以 “0 ...
- swift UITabelVIew - 纯代码自定义tabelViewCell
// // CustomTableViewCell.swift // tab // // Created by su on 15/12/7. // Copyright © 2015年 tian ...