【知识点】

# 所有模块要经历的两个步骤:

  ① 要操作的概念本身:正则表达式   时间

  ② 使用模块取操作它:re                  time

1、正则表达式:一种匹配字符串的规则

  # 正则表达式能做什么?可以定制一个规则来确认某一个字符串是否符合规则,从大段的字符串中找到符合规则的内容

  # 程序领域:

    ① 登录注册页的表单验证

    ② 爬虫:把这个网页下载下来,从里面提取一些信息,找到想要的所有信息,做到数据分析

    ③ 自动化开发

  # 正则表达式是一种独立的语法,和python没有关系

  # 一个正则表达式学习的小工具:http://tool.chinaz.com/regex/

2、正则表达式的语法

  (1)元字符

  ① 字符组[ ]  在一个字符的位置上能出现的内容(比如[1bc] ,一个位置上可以是1,b,c三者中任意一个)

【注意1】字符组的理解1:[1-9]表示1到9,下面出现1~9的数字均标记(匹配1个)

【注意2】字符组的理解2:[1-9][A-Z][a-z]表示第一个必须是数字,第二个必须是大写字母,第三个必须是小写字母,并且三个在一起。(匹配3个)

【注意3】字符组理解3:[1-9A-Za-z]表示第一个位置可以是1~9,也可以是A~Z和a~z,因此以下全匹配。(匹配1个)

  ② 元字符:

  \d == [0-9]——表示匹配一个字符,匹配的是一个数字

  \w == [0-9a-zA-Z]——表示匹配一个数字、字母、下划线 

  \s == [\n  \t ]——表示匹配任意的空白符,包括回车、空格和制表符tab

  \n —— 匹配回车

  \t —— 匹配制表符

  \D ——匹配非数字

  \W ——匹配非数字字母下划线

  \S ——匹配非空白符

【注意】[\d\D]——表示匹配全局(所有),还有[\w\W]、[\s\S]

  ★非常重要的两个:

  ^ ——匹配字符串的开始

  $ ——匹配字符串的结尾

  比如,严格匹配一个手机号,多输入少输入都不行,就在前加^,后加$。

  a|b——表示a或b,在一个位置上可以出现a或b。(abc|ab——表示匹配abc或ab,但长的要放在前面

  [^abc]——表示匹配除了abc以外的任意字符

  . ——表示匹配除了换行符以外的任意字符

  (2)量词

  \d{3} ——表示前面匹配的数字重复三次

  \d\d{3} ——表示第一个只匹配一个数字,第二个匹配三次,最后是四个数字

  \d{3,} ——表示至少匹配数字三次(尽量多的匹配——贪婪匹配

  \d{3,5} ——表示至少匹配数字三次,最多匹配五次(尽量多匹配)

  \d? ——表示匹配数字零次或一次(相当于没有匹配上也算成功)(\d\.?\d——结果可以有:2.3   23)

  \d+——表示匹配数字一次或者多次

  \d* ——表示匹配数字零次或多次(\d\.?\d*——结果可以有:2    2.22    2.3457767)

  (3)* + ? { }

【注意】 特殊用法:

    ① 在量词后跟了一个? ——表示取消了贪婪模式,变成非贪婪模式

     李.{1,3}?和    李连营和    (惰性匹配    回溯算法)

    ② 最常用:  .*x   匹配任意字符直到找到一个x

  (4)分组()与或 | [^]

    

  # 小数或者整数的正则表达式——\d+(\.\d+)?


参考资料:https://www.cnblogs.com/Eva-J/articles/7228075.html


时间:2020-02-19        14:23:58

python学习Day25--正则表达式1的更多相关文章

  1. python学习day25 正则表达式

    4.30-25 正则表达式与re模块 re模块本身是用来操作正则表达式,与正则本身没有关系 正则表达式是指一规则,匹配字符串的规则 1.正则表达式regex 正则表达式regex是指一规则,匹配字符串 ...

  2. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  3. Python学习 之 正则表达式

    1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"ab ...

  4. Python学习笔记——正则表达式入门

    # 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...

  5. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  6. python学习日记(正则表达式)

    定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  7. python学习笔记----正则表达式

    正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...

  8. python学习笔记——正则表达式regex

    1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...

  9. Python学习 :正则表达式

    正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...

  10. python 学习总结----正则表达式

    正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...

随机推荐

  1. 搭建Python开发环境(Mac)

    准备 Python官网: https://www.python.org/ Python官方文档: https://docs.python.org/ 环境搭建 简介 pipenv是Python官方推荐的 ...

  2. 排队看病(PriorityQueue自定义排序)

    看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单的先来先服 ...

  3. Strategic game树形DP解法(Poj1463,Uva1292)

    已经写过本题用二分图的做法,见这儿. 本题的图是一棵树,求最小点覆盖也可以用树形DP的做法. 定义状态f[0/1][u]表示以u为根的子树,u选取/不选最少需要选取多少点来覆盖. 显然 f[0][u] ...

  4. awk从放弃到入门(3):awk变量

    一.变量概述 对于awk来说"变量"又分为"内置变量" 和 "自定义变量" , "输入分隔符FS"和"输出分隔 ...

  5. Linux上安装nodejs

    https://github.com/nodejs/node-v0.x-archive/wiki/Installing-Node.js-via-package-manager#debian-and-u ...

  6. HTML5学习(1)简介

    HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体. HTML5 简单易学. 什么是 HTML5? HTML5 ...

  7. Map.Entry 类使用简介(转)

    Map.Entry 类使用简介(转)   你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息.标准的Map访问方法如下: Se ...

  8. 95. 不同的二叉搜索树 II、96. 不同的二叉搜索树

    95 Tg:递归 这题不能算DP吧,就是递归 一个问题:每次的树都要新建,不能共用一个根节点,否则下次遍历对根左右子树的改动会把已经放进结果数组中的树改掉.. class Solution: def ...

  9. 快速上手leetcode动态规划题

    快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...

  10. Abp.Core运行时提示XX没有实现,或者没有依赖注入的问题,或者调试时提示做出更改的问题

    因为abp的web层对application层有项目引用,但是对domain层并不存在项目引用,而是bin目录下直接引用的dll文件,所以当domain层修改后不会自动将dll文件同步过去.所以有时候 ...