正则表达式经典教程

合集下载

正则表达式教程

正则表达式教程

正则表达式学习要点:1.什么是正则表达式2.创建正则表达式3.获取控制4.常用的正则假设用户需要在HTML 表单中填写姓名、地址、出生日期等。

那么在将表单提交到服务器进一步处理前,JavaScript 程序会检查表单以确认用户确实输入了信息并且这些信息是符合要求的。

一.什么是正则表达式正则表达式(regular expression)是一个描述字符模式的对象。

ECMAScript 的RegExp 类表示正则表达式,而String 和RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。

正则表达式主要用来验证客户端的输入数据。

用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用PHP、 等服务器脚本对其进行进一步处理。

因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。

二.创建正则表达式创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用new运算符,另一个是采用字面量方式。

1.两种创建方式var box = new RegExp('box'); //第一个参数字符串var box = new RegExp('box', 'ig'); //第二个参数可选模式修饰符模式修饰符的可选参数参数含义i 忽略大小写g 全局匹配m 多行匹配var box = /box/; //直接用两个反斜杠var box = /box/ig; //在第二个斜杠后面加上模式修饰符2.测试正则表达式RegExp 对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。

test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。

exec()方法也用于在字符串中查找指定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组。

C#正则表达式基础知识(经典归纳简单易懂)

C#正则表达式基础知识(经典归纳简单易懂)

正则表达式基础知识目录前言 (4)System.Text.RegularExpressions命名空间 (4)Regex类 (5)RegexOption枚举 (5)构造函数 (5)IsMatch()方法 (6)Match()方法 (6)使用Match对象 (6)MatchObj.Success (6)MatchObj.Value (7)MatchObj.ToString() (7)MatchObj.Length (7)MatchObj.Index (7)MatchObj.Groups (7)使用Group对象 (7)GroupObj.Success (7)GroupObj.Value (8)GroupObj.ToString() (8)GroupObj.Length (8)GroupObj.Index (8)GroupObj.Captures (8)MatchObj.NextMatch() (8)MatchObj.Result (string) (8)特殊的Replacement字符串 (9)MatchObj.Synchronized() (9)MatchObj.Captures (9)Matchs()方法 (10)Replace()方法 (10)Split()方法 (11)正则表达式缓存 (11)辅助函数 (12)Regex.Escape(string) (12)Regex.Unescape(string) (12)Regex.Empty (12)pileToA ssembly(...).. (12)基本语法 (13)字符匹配语法 (13)重复匹配语法 (13)字符定位语法 (14)转义匹配语法 (14)其它匹配语法 (15)语法示例 (16)(1)“@”符号 (16)(2)基本的语法字符 (16)(3)定位字符 (17)(4)重复描述字符 (19)(5)择一匹配 (20)(6)特殊字符的匹配 (21)(7)组与非捕获组 (21)(8)贪婪与非贪婪 (23)(9)回溯与非回溯 (24)(10)正向预搜索、反向预搜索 (24)(11)十六进制字符范围 (26)(12)对[0,100]的比较完备的匹配 (26)(13)精确匹配有时候是困难的 (27)前言正则表达式(Regular Expression)是强大、便捷、高效的文本处理工具。

正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程

正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程

正则表达式30分钟⼊门教程——堪称⽹上能找到的最好的正则式⼊门教程本教程堪称⽹上能找到的最好正则表达式⼊门教程本⽂⽬标30分钟内让你明⽩正则表达式是什么,并对它有⼀些基本的了解,让你可以在⾃⼰的程序或⽹页⾥使⽤它。

如何使⽤本教程最重要的是——请给我30分钟,如果你没有使⽤正则表达式的经验,请不要试图在30秒内⼊门——除⾮你是超⼈ :)别被下⾯那些复杂的表达式吓倒,只要跟着我⼀步⼀步来,你会发现正则表达式其实并没有想像中的那么困难。

当然,如果你看完了这篇教程之后,发现⾃⼰明⽩了很多,却⼜⼏乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的⼈在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。

这⾥只是让你明⽩基本的原理,以后你还需要多练习,多使⽤,才能熟练掌握正则表达式。

除了作为⼊门教程之外,本⽂还试图成为可以在⽇常⼯作中使⽤的正则表达式语法参考⼿册。

就作者本⼈的经历来说,这个⽬标还是完成得不错的——你看,我⾃⼰也没能把所有的东西记下来,不是吗?⽂本格式约定:专业术语元字符/语法格式正则表达式正则表达式中的⼀部分(⽤于分析) 对其进⾏匹配的源字符串对正则表达式或其中⼀部分的说明本⽂右边有⼀些注释,主要是⽤来提供⼀些相关信息,或者给没有程序员背景的读者解释⼀些基本概念,通常可以忽略。

正则表达式到底是什么东西?字符是计算机软件处理⽂字时最基本的单位,可能是字母,数字,标点符号,空格,换⾏符,汉字等等。

字符串是0个或更多个字符的序列。

⽂本也就是⽂字,字符串。

说某个字符串匹配某个正则表达式,通常是指这个字符串⾥有⼀部分(或⼏部分分别)能满⾜表达式给出的条件。

在编写处理字符串的程序或⽹页时,经常会有查找符合某些复杂规则的字符串的需要。

正则表达式就是⽤于描述这些规则的⼯具。

换句话说,正则表达式就是记录⽂本规则的代码。

很可能你使⽤过Windows/Dos下⽤于⽂件查找的通配符(wildcard),也就是*和?。

正则表达式30分钟入门教程

正则表达式30分钟入门教程

正则表达式30分钟入门教程正则表达式是一种强大的文本匹配工具,可以在大量的文本数据中进行快速、准确的模式匹配和提取。

对于需要处理文本数据的开发人员和数据分析师来说,掌握正则表达式是非常重要的。

本文将带您在30分钟内入门正则表达式,让您能够快速上手使用。

一、什么是正则表达式?正则表达式是一种用于匹配、查找和替换文本的字符串模式。

它使用特定的语法规则来描述要匹配的字符序列。

正则表达式可以用于验证输入的有效性、从文本中提取特定的信息、替换文本中的指定部分等。

二、正则表达式的基本语法1. 字符匹配:正则表达式中的普通字符表示匹配该字符本身。

例如,正则表达式abc可以匹配字符串abc。

2. 字符类:用方括号[]表示,可以匹配方括号中任意一个字符。

例如,正则表达式[abc]可以匹配字符串a、b或c。

3. 量词:用于指定匹配的次数。

例如,正则表达式a{3}可以匹配3个连续的a字符。

4. 选择符:用竖线|表示,可以匹配多个模式中的一个。

例如,正则表达式a|b可以匹配字符串a或b。

5. 边界匹配:用于限定匹配的位置。

例如,^表示匹配字符串的开头,$表示匹配字符串的结尾。

三、常用的正则表达式示例1. 匹配手机号码:^\d{11}$2. 匹配邮箱地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$3. 匹配身份证号码:^\d{17}[\dXx]$4. 匹配URL地址:^[a-zA-Z]+://[^\s]*$5. 匹配日期:^\d{4}-\d{2}-\d{2}$6. 匹配IP地址:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$四、常用的正则表达式工具1. 在Python中,可以使用re模块来操作正则表达式。

2. 在JavaScript中,可以使用RegExp对象来操作正则表达式。

3. 在文本编辑器中,可以使用正则表达式进行查找和替换。

五、常见问题解答问:如何匹配一个或多个任意字符?答:可以使用点号.来匹配一个任意字符,使用点号加上量词*来匹配一个或多个任意字符。

正则表达式的使用方法

正则表达式的使用方法

正则表达式的使用方法《正则表达式的使用方法》正则表达式(Regular Expression)是一种强大的文本匹配工具,通过使用特定的语法规则,可以快速高效地对文本进行搜索、匹配和替换操作。

在计算机领域,正则表达式被广泛应用于文本处理、数据提取、数据验证等方面。

本文将介绍正则表达式的使用方法,并探讨其常见应用场景。

1. 正则表达式的基本语法正则表达式由普通字符和特殊字符构成,通过组合这些字符形成具有特定含义的模式,用于匹配文本中符合该模式的内容。

以下是一些常见的正则表达式元字符:- .(句点):匹配除换行符以外的任意字符。

- ^(脱字符):匹配字符串的开始位置。

- $(美元符号):匹配字符串的结束位置。

- *(星号):匹配前一个字符的零个或多个重复。

- +(加号):匹配前一个字符的一个或多个重复。

2. 正则表达式的应用举例正则表达式可用于在文本中搜索和匹配特定格式的字符串。

下面是一些正则表达式的常见应用场景:- 数据验证:可使用正则表达式验证用户输入的数据是否符合特定的格式要求,如邮箱、手机号码、身份证号码等。

- 数据提取:通过正则表达式,可以从大段的文本中提取出需要的信息,如提取网页中的URL 链接、电子邮件地址等。

- 搜索替换:利用正则表达式,可以快速搜索文档中的某些特定文本,并进行替换操作,如替换文章中的敏感词汇。

- 日志分析:在系统日志分析中,可利用正则表达式从大量的日志数据中提取出需要的信息,如访问日志中的IP地址、错误日志中的异常信息等。

3. 常用正则表达式工具要使用正则表达式进行匹配和替换操作,可借助一些常用的正则表达式工具:- 在代码环境中,很多编程语言都提供了正则表达式的支持,如Java、Python、JavaScript等。

开发者可以使用相应编程语言的正则表达式函数库调用,实现功能需求。

- 在文本编辑器中,很多编辑器也内置了正则表达式搜索与替换的功能,如Sublime Text、Notepad++等。

正则表达式入门教程

正则表达式入门教程

正则表达式入门教程以下内容经正则表达式学习网授权≈正则表达式是什么?≈在使用电脑进行各种文字处理的时候,我们有时需要查找和匹配一些特殊的字符串,如邮箱地址、验证用户输入的密码是否包含了大小写字母和数字,查找HTML源文档中的所有web地址等等,这时我们就可以使用到正则表达式。

正则表达式本身是一个“字符串”,通过这个“字符串”去描述字符组成规则。

如abbb、abbbb、abbbbb这三个字符串包都是以a字母开头a后面有一个b字母,而且b字母重复了3到5次。

用正则表达式来描述就是ab{3,5},b{3,5}表示b字符重复3到5次。

如果我们想匹配ababab这样的字符串,ab重复了3次,用正则表达式表示就是(ab){3},圆括号()是正则表达式中的分组。

大家如果想亲自感受正则表达式的使用效果,可以打开正则表达式测试系统。

如以上实例所展示的,正则表达式为人们提供了一种简单易用的字符处理工具。

它在目前主流的文字处理软件中都提供了良好的支持(不仅是编程软件,还有文字处理软件Uedit32、EditPlus,网页采集软件火车头等等),它具有很强的通用性,学好它,我们可以达一变应万变的效果。

≈正则表达式详解≈像{},()这种在正则表达式中,具有特殊含义的字符称为元字符(metacharacter)。

元字符是组成正则表达式的基本元素,在正则表达式经常使用的元字符不是很多,概念容易理解。

大家只要花30来分钟学完我们的教程基本上就可以完全掌握。

为了您能更快速的掌握正则表达式,我们为您推荐一款方便的正则表达式在线测试工具“RegExr”,(RegExr由免费提供)。

保留字符匹配字符本身匹配字符数量匹配字符位置分组匹配表达式选项保留字符(返回目录)在正则表达式中,有一些字符在正则表达式中具有特殊含义被称保留字符,如*表示前一个元素可以重复零次或多次,要匹配“*”字符本身使用\*,半角句号.匹配除了换行符外的所有字符,要匹配“.”使用\.。

正则表达式实例详解

正则表达式实例详解

正则表达式实例详解正则表达式实例详解正则表达式(regular expression)是一种特殊的文本格式,用于搜索、替换和验证文本中的字符串。

它可以用来查找文本中的某些结构,也可以用来修改文本的某些部分。

正则表达式具有良好的易读性和可维护性,并且可以有效地捕获文本中的模式,从而使文本处理变得更加简单。

正则表达式有着复杂的语法,但是它也是一种非常有效的工具,可以帮助我们在文本中快速搜索和替换想要的内容。

下面就来看看几个常用的正则表达式实例,以加深大家对它的理解。

1. 字符集匹配:[abcd]这个正则表达式可以用来匹配文本中任意一个字符,其中字符可以是a、b、c或d中的任意一个。

2. 通配符匹配:.这个正则表达式可以用来匹配文本中任意一个字符,不论该字符是什么(除了换行符之外)。

3. 范围匹配:[a-z]这个正则表达式可以用来匹配文本中任意一个小写字母,其中字母可以是a到z之间的任意一个。

4. 重复匹配:a{3}这个正则表达式可以用来匹配文本中连续三个字符a,如aaaa。

5. 否定匹配:[^abc]这个正则表达式可以用来匹配文本中除了a、b、c之外的任意一个字符。

6. 前瞻:(?=abc)这个正则表达式可以用来匹配文本中任意位置后跟着abc字符串的字符,即使abc不是要被匹配的字符串,只是一个前瞻。

7. 零宽断言:(?!abc)这个正则表达式可以用来匹配文本中任意位置后不跟着abc字符串的字符。

8. 分组:(abc|def)这个正则表达式可以用来匹配文本中任意位置的abc 或者def字符串。

以上就是正则表达式实例详解,其中包括了字符集匹配、通配符匹配、范围匹配、重复匹配、否定匹配、前瞻、零宽断言以及分组等实例。

正则表达式的最大优点是可以有效地捕获文本中的模式,可以有效地进行文本处理,比如查找、替换、验证等。

正则表达式的语法有着一定的复杂度,但是只要掌握了它的一些基本原理,就可以用它来快速处理文本中的字符串。

Python正则表达式教程之一:基础篇

Python正则表达式教程之一:基础篇

Python正则表达式教程之⼀:基础篇前⾔之前有⼈提了⼀个需求,我⼀看此需求⽤正则表达式最合适不过。

考虑到之前每次使⽤正则表达式,都是临时抱佛脚,于是这次我就⼀边完成任务⼀边系统的学习了⼀遍正则表达式。

主要参考PyCon2016上的⼀个视频。

我将分⼏篇⽂章对正则表达式进⾏总结。

以下是第⼀部分,基础:基础部分这⾥总结了正则表达式最基础的⽤法,其中⼤部分内容对我(以及⼤部分程序员)来说都是平时经常⽤到的,所以我就⼀笔带过了,只对其中的⼏处⽤例⼦说明。

. 除了换⾏之外的其他所有字符^ ⾏⾸$ ⾏尾[abcd] abcd其中的⼀个字符[^abcd] 除了abcd之外的任意字符[a-d] 相当于[abcd][a-dz] 相当于[abcdz]\b 单词边界\w 字母数字或下划线相当于[a-zA-Z0-9_]\W 与\w相反\d 数字,相当于[0-9]\D 与\d相反\s 空⽩字符,相当于[ \t\n\r\f\v]\S 与\s相反{5} 在此之前的正则表达式部分(下同)准确的出现5次{2,5} ~出现2到5次{2,} ~出现2次或多次{,5} ~出现0到5次* ~出现0次或多次? ~出现0次或1次+ ~出现1次或多次ABC|DEF 匹配ABC或者DEF\ 转义字符,如\表⽰匹配*,\$表⽰匹配$*\b、 \⽤以下⼏个例⼦简单说明⼀下:\b:>>> re.search(r'\bhello\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello,world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello_world')>>>其实这⾥,\b⼤体上和\W⼀⽀,但是\b可以匹配⾏⾸⾏尾等⾮显⽰类的字符,⽽\W不可以。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正则表达式是常见常忘,所以还是记下来比较保险,于是就有了这篇笔记。

希望对大家会有所帮助。

J1.什么是正则表达式简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。

是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文字匹配模式。

正则表达式并非一门专用语言,但也可以看作是一种语言,它可以让用户通过使用一系列普通字符和特殊字符构建能明确描述文本字符串的匹配模式。

除了简单描述这些模式之外,正则表达式解释引擎通常可用于遍历匹配,并使用模式作为分隔符来将字符串解析为子字符串,或以智能方式替换文本或重新设置文本格式。

正则表达式为解决与文本处理有关的许多常见任务提供了有效而简捷的方式。

正则表达式具有两种标准:·基本的正则表达式(BRE – Basic Regular Expressions)·扩展的正则表达式(ERE – Extended Regular Expressions)。

ERE包括BRE功能和另外其它的概念。

正则表达式目前有两种解释引擎:·基于字符驱动(text-directed engine)·基于正则表达式驱动(regex-directed engine)Jeffery Friedl把它们称作DFA和NFA解释引擎。

约定:为了描述起来方便,在本文中做一些约定:1. 本文所举例的所有表达时都是基于NFA解释引擎的。

2. 正则表达式,也就是匹配模式,会简写为Regex。

3. Regex的匹配目标,也就是目标字符串,会简写为String。

4. 匹配结果用会用黄色底色标识。

5. 用1\+1=2 括起来的表示这是一个regex。

6. 举例会用以下格式:RegexTarget StringDescriptiontestThis is a test会匹配test,testcase等2.正则表达式的起源正则表达式的‚祖先‛可以一直上溯至对人类神经系统如何工作的早期研究。

Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。

1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为‚神经网事件的表示法‛的论文,引入了正则表达式的概念。

正则表达式就是用来描述他称为‚正则集的代数‛的表达式,因此采用‚正则表达式‛这个术语。

随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。

正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。

从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。

自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。

3. 正则表达式使用祥解最简单的正则表达式相信大家都已熟悉并且经常使用,那就是文字字符串。

特定的字符串可通过文字本身加以描述;像 test这样的Regex模式可精确匹配输入的字符串‛test‛,但是它也可以匹配this is a testcase,这就不是我们想要得结果。

当然,使用正则表达式匹配等于它自身的精确字符串是没有价值的实现,不能体现正则表达式的真正作用。

但是,假如要查找的不是test,而是所有以字母 t 开头的单词,或所有4个字母的单词,那该怎么办?这超出了文字字符串的合理范围。

所以我们才需要深入地研究正则表达式。

3.1基本语法虽然正则表达式并非一门专用语言,但它也有一些特殊的规定,也可以称之为基本语法。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。

该模式描述在查找文字主体时待匹配的一个或多个字符串。

正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

构造正则表达式的方法和创建数学表达式的方法一样。

也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。

可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。

3.1.1普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。

这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。

3.1.2非打印字符非打印字符也是普通字符,单独列出来便于参考。

SymbolDescription\cx匹配由x指明的控制字符。

例如, \cM 匹配一个 Control-M 或回车符。

x 的值必须为 A-Z 或 a-z 之一。

否则,将 c 视为一个原义的 'c' 字符。

\f匹配一个换页符。

等价于 \x0c 和 \cL。

\n匹配一个换行符。

等价于 \x0a 和 \cJ。

\r匹配一个回车符。

等价于 \x0d 和 \cM。

\s匹配任何空白字符,包括空格、制表符、换页符等等。

等价于 [ \f\n\r\t\v]。

\S匹配任何非空白字符。

等价于 [^ \f\n\r\t\v]。

\t匹配一个制表符。

等价于 \x09 和 \cI。

\v匹配一个垂直制表符。

等价于 \x0b 和 \cK。

Regex中可以使用非打印字符。

\t会匹配一个tab字符(ASC||),\r 会匹配一个回车(0x0D),\n 会匹配一个换行符(0x0A)。

应该注意的是:Windows使用\r\n表示一行的结束,而UNIX 使用\n 。

同样,我们可以在Regex中使用16进制的ASCⅡ码或者ANSI标准码。

在拉丁语中,版权符号的代码是0xA9,所以我们也可以这样来匹配版权符号 \xA9 。

另外一个匹配tab的写法是:\x09 。

但是注意,第一位的‚0‛必须去掉。

3.1.3特殊字符特殊字符也叫做元字符,保留字符(Metacharactor),在Regex中表示特殊的意义,大部分的意思在不同的上下文中的意义是不同的,这里只列出最普遍的意义。

特殊字符共有11个:SymbolDescription$匹配输入字符串的结尾位置。

如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配'\n' 或 '\r'。

要匹配 $ 字符本身,请使用 \$。

( )标记一个子表达式的开始和结束位置。

子表达式可以获取供以后使用。

要匹配这些字符,请使用 \( 和 \)。

*匹配前面的子表达式零次或多次。

要匹配 * 字符,请使用 \*。

+匹配前面的子表达式一次或多次。

要匹配 + 字符,请使用 \+。

.匹配除换行符 \n之外的任何单字符。

要匹配 .,请使用 \。

[标记一个中括号表达式的开始。

要匹配 [,请使用 \[。

?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。

要匹配 ? 字符,请使用 \?。

\将下一个字符标记为或特殊字符、或原义字符、或反向引用、或八进制转义符。

例如, 'n' 匹配字符 'n'。

'\n' 匹配换行符。

序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。

^匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。

要匹配 ^ 字符本身,请使用 \^。

{标记限定符表达式的开始。

要匹配 {,请使用 \{。

|指明两项之间的一个选择。

要匹配 |,请使用 \|。

在元字符前加 \ 转义符,可以把特殊字符当作普通字符来使用。

比如:如要要匹配 1+1=2 ,正确的正则表达式应该为1\+1=2。

否则, + 会被当作特殊字符对待。

除了特殊字符,所有的其他字符都不应该加 \ 。

因为 \ 也是一个特殊字符。

\ 和普通字符组合在一起也可以创造一种特殊的意义。

比如 \d 表示匹配所有的数字。

作为程序员,单引号和双引号不是特殊字符会也许让我们感到很惊讶。

但这是正确的。

因为我们在编程的时候,编程语言会知道引号之间的哪些字符表示特殊意义,编译器在把字符串x传递给regex解释引擎之前,会把它们处理成regex。

比如,在C#中,如果我们要匹配1\+1=2 ,在程序中我们要这样写:‚1\\+1=2‛,C#编译器会把‚\\‛,处理为一个‚\‛。

同样,如果要匹配 C:\Temp ,首先,正则表达式要这样写 C:\\Temp,然后在程序中我们应该这样写:‚ C:\\\\temp‛。

3.1.4字符集字符集描述了一组字符,Regex解释器会认为匹配字符集中的一个字符就可以认为匹配成功。

字符集用[ ]括起来即可。

比如gr[ae]y就可以匹配gray或者grey。

字符集只能匹配一个字符,gr[ae]y就不能和graey匹配。

字符集中的字符顺序是任意的,得到的结果都是唯一的。

可以在字符集中用连字符‚-‛来表示一个范围。

[0-9]的结果和[0123456789]的匹配结果都是相同的。

字符集中的范围可以有多种。

比如[0-9a-fA-F]表示匹配所有的16进制,包括大小写。

也可以把范围和单个字符组合在一起用,[0-9a-fxA-FX]表示匹配所有的16进制或者一个字符X。

字符集的顺序不会影响结果。

在字符集的开始标志‚[‛后面加上一个‚^‛符号,表示否定,表示匹配除字符集中定义的字符以外的所有字符。

包括非打印字符和行结束符。

注意:字符集匹配的一个字符,而不是一个位置。

所以。

q[^u]的意义不是‚q 后面的字符不是u‛。

而是‚q后面的字符可以是除了u以外的所有字符‛。

q[^u]不会和Iraq匹配。

但是会和Iraq is a country匹配,因为q后面的空格字符是一个‚不是u的字符‛。

3.1.5在字符集中使用元字符字符集中的元字符只能是‘]’, ‘\’, ‘^’, 和‘-‘。

其他元字符在字符集中都失去了特殊意义,表示的只是一个普通字符。

也不需要用加‚\‛。

比如:匹配一个‚*‛或者‚+‛,用[*+]就足够了。

即使给他们加上‚\‛,regex解释器也会把他们忽略掉。

四种特殊字符的处理:在字符集中要表示‚]‛,‚^‛和‚-‛需要在后面加上转义符‚\‛,来表示它们代表的分别是普通字符‚]‛,‚^‛和‚-‛。

也可以把它们放在一个不能表示特殊意义的位置,后一个方法比较好,因为他们不会影响可读性。

•‚^‛要想匹配一个‚^‛,可以把它放在除了紧跟‚[‛的任意一个位置。

RegexStringDescription[x^]A string with x and ^.匹配x或者‚^‛•‚]‛可以把‚]‛放在紧跟着‚[‛的位置,或者使用否定字符集。

RegexStringDescription[]x]A string with x and ]匹配x或者‚]‛[^]x]A string with x and ]匹配除了x和‛] ‛以外的所有字符•‚\‛要想把‚\‛当作一个普通字符来匹配,而不是一个特殊字符,必须把‚\‛再用一个‚\‛括起来。

相关文档
最新文档