正则表达式是由普通字符和元字符组成,

   普通字符包含大小写字母, 数字. 在匹配普通字符 的时候我们直接写就可以了. 比如"abc" 匹配的就是"abc".

元字符: 元字符才是正则表达式的灵魂. 元字符中的内容太多了, 在这里我们只介绍一些 常用的

主要内容:

  • 字符组
  • 简单元字符
  • 量词
  • 惰性匹配和贪婪匹配
  • 分组
  • 转义
  1.  字符组:

  字符组用[]方括号括起来.在[]中出现的内容会被分配.例如:[zbc]匹配a或b或c

 如果字符组中的内容过多换可以使用-,例子:[a-zA-Z0-9] :匹配所有的大写小写还有数字

  2.      简单的元字符(常用)

   .    匹配除换行以外的任意字符

   \w   匹配字母或数字或下划线 

  \s     匹配所有任意字符(包括换行)

  \d    匹配数字

  \n  匹配一个换行符

  \t  匹配一个制表符

  \b 匹配一个单词的结尾

   ^  匹配字符串的开始

   $  匹配字符串的的结尾

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

   \D  匹配非数字

   \S  匹配非空白符

   a|b 匹配字符a或字符b

   ()    匹配括号内的表达式,也表示一个组

   [...]  匹配字符组中的字符

   [^...]  匹配除了字符组中的字符的所有字符

  3.      量词  (我们目前匹配的所有内容都是单一文字符号,那如何一次性匹配很多个字符呢)

   *      重复零次或者更多次

    +  重复一次或者更多次

?    重复零次或者一次

    {n}  重复n次

    {n,}  重复n次或者更多次

    {n,m}  重复n到m次

  4.    惰性匹配和贪婪匹配

    在量词中的 *, +,{} 都属于贪婪匹配.就是尽可能多的匹配到结果

在使用 .* 后面加了? 则是尽可能的少匹配,表示惰性匹配

str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.*? ## *重复零次或更多次
此时匹配的是 麻花藤 # ? 重复零次或一次 str: <div>胡辣汤</div> # . 匹配除换行以外的任意字符
reg: <.*>
结果:
<div>胡辣汤</div> str: <div>胡辣汤</div>
reg: <.*?>
结果:
<div>
</div>

.*?x的特殊含义 找到下一个x为止

str: abcdefgxhijklmn
reg: .*?x
结果:abcdefgx

5.    分组

在正则中使用()进行分组. 比如. 我们要匹配⼀个相对复杂的身份证号. 身份证号分 成两种. 老的身份证号有15位. 新的身份证号有18位. 并且新的身份证号结尾有可能是x

给出以下正则: ^[1-9]\d{13,16}[0-9x]$
^[1-9]\d{14}(\d{2}[0-9x])?$
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

6 . 转义

在正则表达式中, 有很多有特殊意义的是元字符, 比如\n和\s等,如果要在正则中匹 配正常的"\n"⽽而不是"换行符"就需要对"\"进行转义, 变成'\\'.在python中, 无论是正则表达式, 还 是待匹配的内容, 都是以字符串的形式出现的, 在字符串中\也有特殊的含义, 本身还需要转 义. 所以如果匹配一次"\n", 字符串中要写成'\\n', 那么正则里就要写成"\\\\n",这样就太麻烦了. 这个时候我们就用到了r'\n'这个概念, 此时的正则是r'\\n'就可以了.

 

day021python 正则表达式的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

随机推荐

  1. 把旧系统迁移到.Net Core 2.0 日记 (16) --Cors跨域访问

    IE浏览器的Intranet局域网设置默认是可以跨域访问的.chrome就不可以. 这里说的跨域是指javascript代码不能跨域, 当然你在后端controller代码里用HttpClient.G ...

  2. summary_20th,Nov 2018

    一. 常量: 相对于变量,不改变的量 规定常量名全部大写(实际还是变量) 二:数值的运算符: 1. 算术运算符 +  和,    - 减,    *乘,       / 除(浮点数结果) // 取整, ...

  3. memory prefix pre,pro,penta,pseudo out _p 1

    1● pre 前的,预先   2● pro 在前,很多,赞同       3● penta 5,五     4● pseaudo   伪,假 pseudo  

  4. coursera国际法笔记 持续更新

    LECTURE ONE International crime court(ICC) came into being after the Second World War. The Nuremberg ...

  5. July_One_Week—linked list

    #include <stdio.h> #include <stdlib.h> typedef struct linklist { unsigned int count; str ...

  6. java高级⑴

    1.之前我们学过 数组: 数组的特点: 01. 长度一旦被定义,不允许被改变 02. 在内存中开辟一连串连续的空间! 那么现在有一个需求: 让我们定义一个数组 来 保存 新闻信息!!! 问题: 01. ...

  7. Saiku二次开发获取源代码在本地编译(五)

    关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务 Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml ...

  8. day25 模块04_模块和包

    休养生息--模块04 1.导入模块的执行的步骤 2.自定义模块 3.自定义包 一.导入模块的执行步骤 1).判断当前正在导入的模块是否已经导入过 2).如果已经导入过,不会重新导入该模块 3).如果没 ...

  9. 堆排序,图解,C/C++实现

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  10. ไม่มีวันเช่น--会有那么一天--电影《初恋这件小事》插曲--IPA--泰语

    小清新的泰国的<初恋这件小事>插曲.