快速系统的掌握正则表达式

之前使用正则表达式有点稀里糊涂的,之前从网上搜到的教程都是乱七八糟的。通过在这个慕课网上学习,才知道原来正则表达式原来可以这样系统的掌握。总结在这里。

第一部分:原子匹配,所有的可见的不可见的字符都可以直接书写用于匹配,

注意1:对于不可见的字符和正则表达式的使用的特殊字符使用反斜杠转义。

注意2:对于中文最好使用unicode编码

第二部分:原子筛选

1点:“|” 表示前后都匹配,或者  ab|bc ab和bc都可以匹配成功。

2点:[abc] 匹配其中任何一个。 (注:”-” 表示区间,例如a到z所有字母可以写成[a-z])

3点:[^abc] 不包含任何一个。

第三部分:原子集合(类似于快捷键一样)

第1点:. 匹配换行符之外的所有字符

第2点:\d 匹配数字和[0-9]等价 \D是\d的补集,等价[^0-9]

第3点:\s 匹配不可见的字符和[\r\n\t\f\v]等价,\S是\s的补集

第4点:\w 匹配字母数字和下划线和[0-9a-zA-Z_]等价,\W是\w的补集

第四部分:量词(修饰匹配前面的原子的个数)

第1点:{n} 恰好出现n次

第2点:{n,} 大于等于n次

第3点:{n,m} 大于等于n次,小于等于m次

第4点:* 匹配0次 1次或者多次,相当于{0,}

第5点:+ 匹配1次或者多次,相当于{1,}

第6点:? 匹配0次或者1次,相当于{0,1}

第五部分:边界控制和模式单元

第1点:^表示以后面的原子作为开头,前面没有任何东西

第2点:$表示以前面的原子作为结尾,后面没有任何东西

第3点:() 括起来的内容作为一个原子例如(ab){2},就表示匹配2个ab,(aa|bb)cd, 就表示匹配aacd或者bbcd

第六部分:修正类型(为了消除正则表达式的歧义)

修正类型有好多种,我觉得最重要一个就是关于贪婪模式和懒惰模模式的修正,也是和第四部分相关的。

例如:

正则表达式是:(ab){2,3},匹配对象是:ababab

那匹配的结果是abab, 还是ababab呢,前面的就是懒惰模式,后面的就是贪婪模式。

为了消除这种歧义,你要指定你所使用的模式。不同的正则引擎,指定方式不一样:

例如:

php的是在正则表达式后面加个U或者u,分别表示懒惰模式和贪婪模式 例如’/[0-9]*/U’

java使用的正则引擎是支持在有歧义的量词后面加个?表示懒惰模式,默认是贪婪模式。

例如

[0-9]+? 就表示匹配到尽量少的内容就返回。

正则表达式还有一些其它内容和细节,但是我觉得掌握这些概念,在实际应用中可以构造任何想要的匹配形式了。

转自我的博客:http://zhaoyanblog.com/archives/715.html

时间: 2024-12-06 23:45:09

快速系统的掌握正则表达式的相关文章

[iOS]利用系统NSRegularExpression使用正则表达式

// Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights reserved. // #import <UIKit/UIKit.h> #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad];

辛星教你快速掌握PHP的正则表达式

首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,由于人数众多,而且来源也是特别分散,就不一一介绍了,见谅. ************跨语言的主题************** 1.就如同xml.json.cookie.session.get.post等话题一样,正则表达式是一个跨越了语言的话题,几乎绝大多数语言都支持正则表达式,可以说,只要这门语言支持字符串,它就应该支持正则表达式,因为很多功能不使用正则表达式特别麻烦 ,但是使用了正则表达式就

Linux系统grep及正则表达式详解

1.grep:根据模式搜索文本 并将符合模式的文本行显示出来 文本字符和正则表达式的元字符组合而成匹配条件 grep'root' /etc/passwd搜索/etc/passwd文件中包含有root字符的行显示出来 -i:只显示被模式匹配的行 --color:被模式匹配的行用颜色显示出来 -v:只显示没有被模式匹配的行 -o:只显示被模式匹配到的字符串 2.正则表达式: 元字符: .:表示匹配任意单个字符 grep'r..t' /etc/passwd []:表示匹配指定范围内的任意单个字符 [^

Linux系统学习之正则表达式

一.基础的正则表达式 1."."(一个点)符号 点符号用于U匹配除换行符号之外的任意一个字符.例如:r.t可以匹配rot.rut,但是不能匹配root,但如果使用r..t,就可以匹配root.ruut.r  t(中间是两个空格)等. 2."*"符号 "*"号用于匹配前一个字符0次或任意多次,比如ab*,可以匹配a.ab.abb等."*"号经常和"."符号加在一起使用.比如".*"代表任意

如何快速系统学会使用SPSS?

SPSS是一款数据统计与数据分析工具,操作简单属于数据分析的入门工具. 想要灵活使用SPSS,需要掌握两个方面内容:数据分析相关知识.SPSS操作 1 数据分析 在使用数据分析工具之前,首先要了解数据分析的思路,有的人刚拿到数据就迫不及待的把数据一股脑丢进SPSS里,然后才发现自己什么都不会,不知道要做什么,更不知道怎么做.因此核心是拥有数据分析的思维. 在学习数据分析的过程中,建议大家按照以下四个模块进行学习:一是数据分析思维的培养.二是数据间的几类关系情况.三是数据分析方法的选择.四是数据研

正则表达式及编程三剑客(grep、sed、awk)命令详解

博文大纲:一.正则表达式(1)正则表达式的定义(2)正则表达式用途1.基础正则表达式(1)grep命令工具2.扩展正则表达式二.文本编辑处理器1.grep命令工具2.sed命令工具3.awk命令工具 一.正则表达式 (1)正则表达式的定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为regex.regexp或RE.正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.简单的说,正则表达式是一种匹配字符串的方法,通过一些特殊符号,实现快速查找.删除.替换某个特定字符串.

刨根究底正则表达式之零——前言

前言 一.缘起 1. 前面在字符编码系列文章的前言中曾说过,类似于字符编码这样基础.重要.应用广泛而又特别容易让人困惑的主题还有字节序(即大小端表示).正则表达式以及浮点数实现.日期时间处理等等.其中,字节序.正则表达式跟字符编码的关系非常密切.字符编码以及字节序的问题已经在字符编码系列文章中介绍过了,这个系列再来讨论正则表达式. 不同于字符编码,正则表达式目前市面上并不缺乏专业著作,比如那本被誉为正则表达式学习圣经的<精通正则表达式>就很值得一读,另外该书的译者余晟先生所写的<正则指引

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 (一)用户态.内核态和中断处理过程 (二)系统调用概述 系统调用概述和系统调用的三层皮 (三)使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 使用库函数API获取系统当前时间 C代码中嵌入汇编代码的方法(复习) 使用C代码中嵌入汇编代码触发系统调

linux基础:shell中的正则表达式用法大全

在Linux系统中,正则表达式(RegularExpression)是通过一些特殊字符的排列,用以查找.替换.删除等操作的强大工具,对于每一个Linux用户,都是非常重要的.在现有的系统中,正则表达式也分为基础正则表达式(grep),扩展正则表达式(egrep).在正式了解正则表达式之前,先了解一些相关的字符概念,它们在正则表达式中都有特殊的含义与用法. 对于基础正则表达式grep而言,每个特殊字符分别有不同的匹配: 1.字符匹配: .     :匹配任意单个字符       [ ]    :匹