易语言正则表达式简明教程

合集下载

正则表达式渐进教程

正则表达式渐进教程

正则表达式渐进教程First Step:简单、实用的快捷入门,不涉及编程。

1. 正则表达式的定义什么是正则表达式?用特殊的符号代表一个字符,这些特殊字符和普通字符通过某些规则组合成的字符串就是正则表达式。

它代表一个或多个字符(串)。

专业解释,正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。

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

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

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

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

2. 正则表达式的用处哪些时候用到正则表达式?1)在搜索、替换的时候,要用到正则表达式,很多软件都提供正则表达式搜索、替换功能,例如某些编辑器EditPlus、EmEditor、Vi,文件管理软件Total Commander……2)编程的时候,Perl, Python, Ruby, Java, and C# ,.NET Framework,PHP, and MySQL……都要用到正则表达式。

3)一些应用软件,用于批量修改文本,如TextForever、Replace Pioneer……3. 正则表达式的语法如何理解正则表达式?用过通配符吗?? 代表1个字符* 代表任意字符正则表达式的作用和通配符有点相似,不同的是正则表达式功能相当强大、灵活,它的组成可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组成的任意组合。

正则表达式有自己的一套语法,有很多规则,理论上可以描述任意字符(串)。

元字符列表元字符匹配字符. 除换行符之外的任一字符\a Bell characer.\d 从0到9的一位数字,等价于[0-9]\D 一个非数字字符,等价于[^0-9]\e ASCII Escape character.\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”,\w 一个单词字符,数字或下划线字符,等价于"[A-Za-z0-9_]"\W 一个非单词字符,等价于"[^A-Za-z0-9_]"\num 其中num是一个八进制换码值,必须是1, 2 或3 个数字长,不得超过256 \x{FF} 一位或二位十六进制码,允许在正则表达式中使用ASCII 码,\xFF 一位或二位十六进制码规则列表转义符匹配\ 标记特殊字符或原义字符\Q 原义字符开始符\E 原义字符结束符限定符* 重复零次或最多次+ 重复一次或最多次? 重复零次或一次{n} 重复n次{n,} 重复至少n次{n,m} 重复至少n 次,至多m 次,m 和n 为非负的整数*?重复零次或最少次+?重复一次或最少次??尽量少重复零次或一次{n,m}?尽量少重复至少n 次,至多m 次,m 和n 为非负的整数定位符^ 行首位置$ 行尾位置\b 边界,如空格、换行前或后的位置\B 非边界\< 词首位置\> 词尾位置(?:pattern) 匹配pattern的位置,不获取匹配结果(?=pattern) 肯定正查,后缀匹配之前的位置(?!pattern) 否定正查,后缀不匹配之前的位置(?<=pattern) 肯定反查,前缀匹配之后的位置(?<!pattern) 否定反查,前缀不匹配之后的位置运算符x|y x 或y[…] 方括号中列出的任一字符,…可以是某个范围,如a-z A-Z 0-9 \x00-\xff;也可以是单个字符[^…] 不在方括号里列出的任一字符(…) 子表达式的组合、引用(获取匹配的字符串)\n 引用()内子表达式,\n取值\1-\9,代表左至右第1个到第9个子表达式,\0代表整个表达式(?>…) 原子组合,只以第一个匹配字符串匹配修改符(?g) 打开“贪婪”模式(默认是打开的)(?-g) 关闭“贪婪”模式,此时"+"与"+?"同义(?i) 忽略大小写。

正则表达式快速入门

正则表达式快速入门

教程精选:正则表达式快速入门作者:开心石头出处:天极网责任编辑:wenwu[ 2005-12-02 11:06 ]【导读】正则表达式是从左向右去匹配目标字符串的一组模式。

大多数字符在模式中表示它们自身并匹配目标中相应的字符正则表达式广泛出现在UNIX/Linux相关的各种领域和多种编程语言里。

从常见的shell命令到大名鼎鼎的Perl语言再到当前非常流行的PHP,它都扮演着一个重要的角色。

甚至windows的命令行控制台也支持正则表达式。

如果你是一个Linux服务器管理员,你经常会在一些服务器的设置脚本里看到它。

可以说,它是学好Linux/UNIX必需掌握的一个知识点,否则你连Linux的启动脚本都读不懂。

偏偏它又的确有点晦涩难懂,而且相关的资料又大部分是英文,更为它的学习增加了几多困难。

即使有些中文的翻译资料,不同的译者对一些术语的译法也五花八门,读着让人平添困惑。

为此,我决定为它写一个简明教程,尽量可以覆盖正则表达式涉及到的各主要概念。

我并不想把本文写成一本详细的正则表达式语法手册,事实上,这些手册已经存在了,不过读起来比较难懂。

我希望的是在完成本教程后,你可以比较轻松的读懂各种工具的正则表达式语法手册并可以迅速上手,不过要用好正则表达式,可不是一篇短短的教程可以解决的,那是无数实践练习的结果。

但是,本文的最后一部分对于正则表达式的编写提出了一些原则性的建议,学习一下这些正则表达式应用先驱者的经验会让我们在今后的实践中少走一些弯路。

正则表达式是英文“regular expressions”的译文,它的产生据说可以追溯到“神经网络”等比较高深的理论。

那么什么是正则表达式呢?正则表达式是从左向右去匹配目标字符串的一组模式。

大多数字符在模式中表示它们自身并匹配目标中相应的字符。

举个最简单的例子,模式“The quick brown fox”匹配了目标字符串中与其完全相同的一部分。

前面已经提过,正则表达式被许多植根于UNIX/Linux的工具采用,可是这些工具的正则表达式语法并不完全相同,它们中的一些对正则表达式语法的扩展并不被其它工具识别,这也为正则表达式的使用增加了难度。

正则表达式分钟入门教程

正则表达式分钟入门教程

正则表达式分钟入门教程 Modified by JEEP on December 26th, 2020.正则表达式30分钟入门教程版本: (2009-4-11) 作者:转载请注明1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。

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

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

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

除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。

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

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

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

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

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

如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。

在这里,*会被解释成任意的字符串。

易语言 删除空白字符 正则

易语言 删除空白字符 正则

易语言删除空白字符正则删除空白字符在编程中是一项常见的操作。

空白字符包括空格、制表符、换行符等。

在易语言中,我们可以通过正则表达式来实现删除空白字符的功能。

我们需要明确一下需求,即删除空白字符。

空白字符在文本中往往是没有实际意义的,而且在一些情况下会影响到程序的正确运行。

因此,删除空白字符是一项非常有必要的操作。

接下来,我们可以使用易语言的正则表达式函数来实现删除空白字符。

具体的步骤如下:1. 定义一个字符串变量,用于存储待处理的文本。

2. 使用正则表达式函数,将文本中的空白字符替换为空字符串。

正则表达式的模式可以使用"\s"表示匹配任意空白字符。

3. 输出处理后的文本。

下面是一段示例代码,演示了如何使用正则表达式删除空白字符:```vb函数删除空白字符(文本:字符串) -> 字符串正则表达式.初始化()正则表达式.模式 = "\s"正则表达式.替换为 = ""返回正则表达式.替换(文本)结束函数变量待处理文本:字符串 = "这是一段带有空白字符的文本。

"变量处理后文本:字符串 = 删除空白字符(待处理文本)输出(处理后文本)```以上代码会输出处理后的文本,其中所有的空白字符都被删除了。

在实际应用中,删除空白字符往往是为了方便字符串的处理和解析。

例如,当我们从网页中提取文本内容时,往往需要先删除其中的空白字符,然后再进行进一步的处理。

需要注意的是,在删除空白字符的过程中,我们需要注意一些特殊情况的处理。

例如,如果文本中有特殊字符或者多余的空白字符,可能会导致正则表达式匹配错误。

因此,在实际应用中,我们需要根据具体情况进行适当的处理,以保证程序的正确性。

总结起来,删除空白字符是一项常见的编程操作,在易语言中可以使用正则表达式来实现。

通过删除空白字符,可以方便地处理和解析文本内容,提高程序的效率和可读性。

在实际应用中,我们需要根据具体情况进行适当的处理,以确保程序的正确性。

正则表达式完全学习手册

正则表达式完全学习手册

正则表达式完全学习手册:菜鸟入门指导正则表达式能够很恐怖,真得很恐怖。

幸运的是,一旦记住每一个符号所表达的意思,恐惧就会快速消退。

若是你对正则表达式一无所知,正如文章题目,那你又就有很多东西要学了。

下面让咱们马上开始吧。

第一节:基础学习想要高效地学习和掌握正则表达式的关键是花一天的时刻记居处有符号。

这可能是我所能提供的最好的建议。

坐下来,做些记忆卡片,然跋文住它们。

以下为最多见的一些符号:. - 匹配任意字符,换行符除外(如果dotall 为false)。

* - 该符号前面的字符,匹配0 次或多次。

+ - 该符号前面的字符,匹配1次或多次? - 该符号前面的字符是可选的。

匹配0 次或1 次。

\d - 匹配任何单个数字。

\w - 匹配任何一个字符(包括字母数字以及下划线)。

[XYZ] - 匹配字符组中的任意一个字符,即X、Y、Z 中的任意一个。

[XYZ]+ - 匹配字符组中的一个或多个字符。

$ - 匹配字符串结束的位置。

^ - 匹配字符串开始的位置。

[^a-z] - 当出现在字符类中时,^ 表示 NOT(非);对于该示例,表示匹配任何非小写字母。

很闷吧,不过仍是记住它们,记住以后你会明白益处的。

工具你以为一个表达式是正确的,超级正确,但就是无法取得想要的结果,这时你可能会产生将头发拔光的冲动。

去下载桌面应用程序吧,那个对你是必不可少的,而且玩起来超级有趣的。

它提供实时检查,还有一个侧边栏,里面包括了每一个字符的概念和用户,超级详细。

第二节:正则表达式傻瓜教程:抓屏视频下一步是学习如何真正地利用这些符号。

若是视频是你的偏好,那你走运了。

这里有五个课程的视频教程,超级适合你:“”。

(Jeffery Way:在这一系列视频教程中,我将交给你如安在JavaScript和PHP中高效的利用正则表达式。

我会假设你是从零开始。

)第三节:正则表达式和 JavaScript本节为最后一节,咱们来看看JavaScript 方式如何利用正则表达式。

正则表达式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. 在文本编辑器中,可以使用正则表达式进行查找和替换。

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

正则表达式基础入门教程

正则表达式基础入门教程

正则表达式基础入门教程时间:2009-04-22 07:15:33来源:网络作者:未知点击:0次负向位置指定前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的方法(反义)。

但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?例如,如果我们想查找这样的单词--它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样:\b\w*q[^u]\w*\b匹配包含后面不是字母u的字母q的单词。

但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单词的结尾的话,像Iraq, Benq,这个表达式就会出错。

这是因为[^u]总是匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么),后面的\w+\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。

负向位置指定能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。

现在,我们可以这样来解决这个问题:\b\w*q(?!u)\w*\b。

零宽负向先行断言(?!exp),只会匹配后缀exp不存在的位置。

\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字。

同理,我们可以用(?<!exp),零宽负向后行断言来查找前缀exp不存在的位置:(?<![a-z])\d{7} 匹配前面不是小写字母的七位数字(实验时发现错误?注意你的"区分大小写"先项是否选中)。

一个更复杂的例子:(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容。

(<?(\w+)>) 指定了这样的前缀:被尖括号括起来的单词(比如可能是<b>),然后是.*(任意的字符串),最后是一个后缀(?=<\/\1>) 。

易语言正则表达式模块

易语言正则表达式模块

易语言正则表达式模块
易语言没有原生的正则表达式模块,但可以通过调用其它语言的正则表达式库来实现正则表达式功能。

比如可以使用Windows API的正则表达式函数(regexp),或者调用外部的正则表达式库(如PCRE)。

以下是示例代码,调用Windows API的示例:
vb
'声明Windows API函数
Declare Function regexp Lib "kernel32.dll" Alias "RtlMatchRegularExpression" ( _
ByVal lpRegularExpression As String, _
ByVal lpString As String) As Long
'调用函数解析正则表达式
Dim str As String
str = "hello, world!"
'匹配字符串,返回匹配结果的数量
Dim result As Long
result = regexp("hello", str)
If result > 0 Then
MsgBox "Matched!"
Else
MsgBox "Not matched."
End If
需要注意的是,上述示例中使用的Windows API函数可能并不是最优的实现方式,可以根据具体需求选择适合的实现方式。

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

正则表达式(regular expression)前言正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。

只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。

索引1._引子2._正则表达式的历史3._正则表达式定义3.1_普通字符3.2_非打印字符3.3_特殊字符3.4_限定符3.5_定位符3.6_选择3.7_后向引用4._各种操作符的运算优先级5._全部符号解释6._部分例子7._正则表达式匹配规则7.1_基本模式匹配7.2_字符簇7.3_确定重复出现--------------------------------------------------------------------------------1. 引子目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP 等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

正则表达式的使用,可以通过简单的办法来实现强大的功能。

为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$这样的代码曾经多次把我自己给吓退过。

可能很多人也是被这样的代码给吓跑的吧。

继续阅读本文将让你也可以自由应用这样的代码。

注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。

2. 正则表达式的历史正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。

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

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

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

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

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

如他们所说,剩下的就是众所周知的历史了。

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

3. 正则表达式定义正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

列目录时,dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。

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

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

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

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

3.2 非打印字符字符含义\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。

3.3 特殊字符所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。

如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。

ls \*.txt。

正则表达式有以下特殊字符。

特别字符说明$ 匹配输入字符串的结尾位置。

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

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

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

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

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

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

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

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

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

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

要匹配 .,请使用 \。

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

要匹配 [,请使用 \[。

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

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

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

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

'\n' 匹配换行符。

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

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

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

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

要匹配 {,请使用 \{。

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

要匹配 |,请使用 \|。

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

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

正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

3.4 限定符限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

有*或+或?或{n}或{n,}或{n,m}共6种。

*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

正则表达式的限定符有:字符描述* 匹配前面的子表达式零次或多次。

例如,zo* 能匹配 "z" 以及 "zoo"。

* 等价于{0,}。

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

例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配"z"。

+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。

例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。

? 等价于 {0,1}。

{n} n 是一个非负整数。

匹配确定的 n 次。

例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,} n 是一个非负整数。

至少匹配n 次。

例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。

'o{1,}' 等价于 'o+'。

'o{0,}' 则等价于 'o*'。

{n,m} m 和 n 均为非负整数,其中n <= m。

最少匹配 n 次且最多匹配 m 次。

例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。

'o{0,1}' 等价于 'o?'。

请注意在逗号和两个数之间不能有空格。

3.5 定位符用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。

不能对定位符使用限定符。

3.6 选择用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。

但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。

其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

3.7 后向引用对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。

存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。

每个缓冲区都可以使用'\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。

可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。

4. 各种操作符的运算优先级相同优先级的从左到右进行运算,不同优先级的运算先高后低。

各种操作符的优先级从高到低如下:操作符描述\ 转义符(), (?:), (?=), [] 圆括号和方括号*, +, ?, {n}, {n,}, {n,m} 限定符^, $, \anymetacharacter 位置和顺序| “或”操作5. 全部符号解释字符描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。

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

'\n' 匹配一个换行符。

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

^ 匹配输入字符串的开始位置。

如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配'\n' 或 '\r' 之后的位置。

$ 匹配输入字符串的结束位置。

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

相关文档
最新文档