前情提要:

    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 模块 常规方法使用的更多相关文章

  1. Maven提高篇系列之(一)——多模块 vs 继承

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  2. ABP新增模块可能遇到的问题

    当我们新增一个模块时: public class SSORedisModule: AbpModule { //public override void PreInitialize() //{ // b ...

  3. 爬虫与request模块

    一.爬虫简介 1.介绍 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁. ...

  4. python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)

    一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...

  5. python2.0_day18_Django自带的用户认证模块的使用

    用户验证我们基于一个项目来学习利用Django框架中的user表实现用户认证Django练习小项目:学员管理系统设计开发 项目需求: 1.分讲师\学员\课程顾问角色, 2.学员可以属于多个班级,学员成 ...

  6. JS框架设计之加载器所在路径的探知一模块加载系统

    1.要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介,但用户在require是都用ID,我们需要一个将ID转换为URL的方法,思路很简单,强加个约定,URL的合成规则是为: ...

  7. Maven 梳理 -多模块 vs 继承

    Maven提高篇系列之(一)——多模块 vs 继承   这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plu ...

  8. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  9. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. 110. Balanced Binary Tree (Tree; DFS)

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  2. 使用SQL查询所有数据库名和表名

    使用SQL查询所有数据库名和表名 MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 1 1 查询指定数据库中所有表名 select table_name from i ...

  3. [原创]解读2017 OWASP Top10漏洞体系(含接口安全)

    2017年4月初,OWASP发布了关于Top10的征求意见版. 争议最大的是A7攻击检测与防范不足. 但我主要是按照日常的渗透漏洞进行解读分析的. 解读完毕后,首发t00ls原创文章. https:/ ...

  4. html符号转换

    通常情况下,HTML会自动截去多余的空格.不管你加多少空格,都被看做一个空格.比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个.为了在网页中增加空格,你可以使用 表示空格.最常用的 ...

  5. jquery的理解

    1.jquery的好处 简化js的复杂操作 不再需要关心兼容性 提供大量使用方法 2.jquery的设计思想 选择网页元素 -模拟css选择元素 -独有的表达式选择 -多种筛选方法 写法 -方法函数化 ...

  6. express4.x Request对象获得参数方法小谈【原创】

    最近看完慕课网 “node.js 建站攻略”后, 对mongodb 操作有了进一步认识, 为了进一步巩固该数据库知识, 于是使用学到的知识搭建一个最简单的mongoDemo. 搭建完成后已放到Gith ...

  7. Codeforces768C Jon Snow and his Favourite Number 2017-02-21 22:24 130人阅读 评论(0) 收藏

    C. Jon Snow and his Favourite Number time limit per test 4 seconds memory limit per test 256 megabyt ...

  8. Give $20/month and provide 480 hours of free education

    Hi , Hope all is well. Summer is right around the corner, and the Khan Academy team is excited to sp ...

  9. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  10. 调整Linux最大打开文件数

    #!/bin/bash ## 文件数限制 ulimit -n ulimit -Sn ulimit -Hn ## fs.nr_open,进程级别 ## fs.file-max,系统级别 ## 最大文件描 ...