学习正则表达式笔记(二)

正则匹配的各种模式

1.择一匹配(|)

  择一匹配用管道符号(|),也就是竖线表示。代表可以从多个模式中选择一个,可用于分割正则表达式。例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。

2.匹配任意单个字符

  1. 点号(.)可以匹配除换行符 \n 以外的任意字符,无论是空格,字母,数字,可打印字符、不可打印字符,还是一个符号,使用点号都能够匹配它们。
  2. 在Python中,如果使用模块属性re.S 也就是 re.DOTALL,那么换行符 \n 也可以匹配了。

3.从字符串起始或者结尾或者单词边界匹配

  1. 要匹配字符串的开始位置,可以使用脱字符(^)或者特殊字符 \A 。例如:^start,匹配从start开始。
  2. 要匹配字符串的结束位置,可以使用美元符号($)或者 \Z 。例如:end$,匹配以end结束。
  3. 特殊字符\b 和\B 可以用来匹配字符边界。区别在于\b 用于匹配一个单词的边界,即如果一个模式必须位于单词的起始部分,就不管该单词前面是否有任何字符。同样,\B 将匹配出现在一个单词中间的模式。

  例如:

  •   \bthe,匹配以 the开头的字符串。
  •   \bthe\b,仅仅匹配单词 the。
  •   \Bthe, 任何包含但并不以 the 作为起始的字符串

4.字符集

  使用方括号表示字符集,可以匹配字符集中的任意符号。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。

5.限定范围和否定

  1. 使用 - 连接字符,表示匹配两个字符之间的任意字符。例如: 1-9,A-Z,分别用于表示数值数字、大写字母。
  2. 在方括号中的字符前加 ^,表示否定,不匹配 ^ 之后的字符,例如:[^aeiou],表示一个非元音字符。

6.特殊符号*、+和?

  1. 星号操作符(*)将匹配其左边的正则表达式 出现零次或者多次的情况。
  2. 加 号(+)操作符将匹配一次或者多次出现的正则表达式。
  3. 问号(?) 操作符将匹配零次或者一次出现的正则表达式。也叫做非贪婪匹配。

7. 使用圆括号指定分组

  一对圆括号可以实现以下任意一个(或者两个)功能:1.对正则表达式进行分组;2.匹配子组。

8.扩展表示法

  扩展表示法时以问号开始(?…)的。通常用于在判断匹配之前提供标记,实现一个前视(或者后视)匹配,或者条件检查。尽管圆括号使用这些符号,但是只有(?P<name>)表述一个 分组匹配。所有其他的都没有创建一个分组。

正则表达式模式                  匹配的字符串

(?:\w+\.)*               以句点作为结尾的字符串,例如“google.”、“ twitter.”、“ facebook.”,但是这些匹配不会保存下来 供后续的使用和数据检索。

(?#comment)        此处并不做匹配,只是作为注释。

(?=.com)               如果一个字符串后面跟着“.com”才做匹配操作,并不使用任何目标字符串。

(?!.net)                  如果一个字符串后面不是跟着“.net”才做匹配操作。

(?<=800-)              如果字符串之前为“800-”才做匹配,假定为电话号码,同样,并不使用任何输入字符串。

(?<!192\.168\.)      如果一个字符串之前不是“192.168.”才做匹配操作,假定用于过滤掉一组 C 类 IP 地址。

(?(1)y|x)                如果一个匹配组 1(\1)存在,就与 y匹配;否则,就与 x 匹配。

时间: 2024-11-06 22:27:39

学习正则表达式笔记(二)的相关文章

学习正则表达式笔记

1.正则表达式简介 正则表达式为高级的文本模式匹配,抽取,与和或形式的搜索和替换功能提供了基础.也就是说正则表达式(RegEx)能匹配到多个字符,你就可以很容易的操作这些匹配到的字符,只要你运用正确的字符和特殊符号. Python中通过导入 re 模块来支持正则表达式. 2.常见的正则表达式符号和特殊字符 2.1符号 符号表示法 描述 示例 literal 匹配文本字符串的字面值 literal,即匹配原始字符 foo re1|re2 匹配正则表达式 re1 或者 re2,中间的 | 相当于或,

学习 kity 笔记(二)

继续学习 kity. 简要看一个 core/utils.js 和 core/browser.js. == utils.js == 函数 each(array_or_object, callback, context?) 遍历数组或对象, 调用回调. 函数 extend(obj, src...) 扩展 src... 到 obj. 函数 deepExtend() 递归深层的 extend(). (我觉得最好还是别用...) 函数 clone() 浅复制一个对象. 函数 copy() 深度复制对象.

U3D学习使用笔记(二)

1.在移动端www.texture使用时不能实时加载纹理,www.LoadImageIntoTexture使用没问题 2.public FaceFeature FaceFeatureData { get { return mFaceFeature; } set { mFaceFeature = value; } } 类型调用结构体中自定义函数修改mFaceFeature,但是值并没发生改变 3.check.parent = scene.Find(index);check.gameObject.S

【HTML5学习】HTML5学习整理笔记(二)

接上一篇 (六):HTML5样式,链接和表格 ①:HTML样式: 1.标签: <style>:样式定义 <link>:资源引用 2.熟悉: rel="stylesheet":外部样式表 type="text/css":引用文档的类型 margin-left:边距 HTML三种样式插入方法: 1.外部样式表: <link rel="stylesheet" type="text/css" href=&

深度学习入门教程UFLDL学习实验笔记二:使用向量化对MNIST数据集做稀疏自编码

今天来做UFLDL的第二个实验,向量化.我们都知道,在matlab里面基本上如果使用for循环,程序是会慢的一逼的(可以说基本就运行不下去)所以在这呢,我们需要对程序进行向量化的处理,所谓向量化就是将matlab里面所有的for循环用矩阵运算的方法实现,在这里呢,因为之前的实验我已经是按照向量化的形式编写的代码,所以这里我只把我对代码修改的部分发上来供大家参考吧.本文为本人原创,参考了UFLDL的教程,是我自己个人对于这一系列教程的理解以及自己的实验结果.非盈利性质网站转载请在文章开头处著名本文

spidering hacks 学习笔记(二)

看过去很乱,学习的记录东西而已,等我读完这本书,就把笔记给整理下!嘿嘿 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离

Nginx反向代理 Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server).nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上.如下面的示例中,location的/uri将被替换为上游服务器上的/newuri. location /uri { proxy_pa

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚