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

   普通字符包含大小写字母, 数字. 在匹配普通字符 的时候我们直接写就可以了. 比如"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. Java逻辑

    1.开发简单Java应用程序 1-1:什么是程序 程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合.1-2:为什么学习Java Java是现在的主流1-3:Java可以做什么 ...

  2. 一篇文章有若干行,以空行作为输入结束的条件。统计一篇文章中单词the(不管大小写,单词the是由空格隔开的)的个数。

    #include <iostream>using namespace std; int k = 0;int n = 0;int main() { char c; char a[1000]; ...

  3. 神奇的口袋(dp)

    有一个神奇的口袋,总的容积是40,用这个口袋可以变出一 些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2……an.John可 ...

  4. PAT-GPLT训练集 L2-001 紧急救援(最短路)

    PAT-GPLT训练集 L2-001 紧急救援 题目大意:求最短路的条数,最短路中的权重和的最大值和这条最短路的路线 分析:使用dijkstra算法求出最短路,并且对dijkstra算法进行变化,设起 ...

  5. 微信小程序code 换取 session_key

    code 换取 session_key ​这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid.其中 session_key 是对用户数据进行 ...

  6. java集合框架图

  7. Java中数据类型相互转化

    1 将String 转换成int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String], ...

  8. 遍历所有子物体中renderer(渲染器)中的material(材质)并改变其alpha值实现若隐若现的效果

    using UnityEngine;using System.Collections;using UnityEngine.UI; public class CubeControl : MonoBeha ...

  9. jvm常用参数

    -Xms512m:初始堆内存 -Xmx512m:最大堆内存 -XX:PermSize=256m:初始永久代内存(方法区,非堆) -XX:MaxPermSize=256m:最大永久代内存(方法区,非堆) ...

  10. S2 深入.NET和C#编程 机试测试错题积累

    机试第一题:                              //创建文件流(路径 模式) FileStream fa = new FileStream(@"D:\\S2第一次全文 ...