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

合集下载

正则表达式渐进教程

正则表达式渐进教程

正则表达式渐进教程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函数可能并不是最优的实现方式,可以根据具体需求选择适合的实现方式。

易语言 提取文章 正则

易语言 提取文章 正则

易语言提取文章正则
易语言是一种面向中文开发者的编程语言,它的特点是简单易学,适合初学者入门。

在易语言中,要提取文章中的内容可以使用正则表达式。

正则表达式是一种用来匹配字符串的强大工具,它可以帮助我们在文本中快速准确地定位和提取我们需要的内容。

在易语言中,可以使用正则表达式的相关函数来实现文章内容的提取。

首先,我们需要使用正则表达式来定义我们需要提取的内容的模式,然后使用易语言中提供的正则表达式相关的函数来进行匹配和提取。

比如,可以使用类似于RegExMatch函数来进行正则表达式的匹配,使用RegExGet函数来获取匹配到的内容。

在使用正则表达式提取文章内容时,需要考虑到文章中可能出现的各种情况,比如换行符、特殊字符等,以确保能够准确匹配到目标内容。

同时,还需要注意正则表达式的性能和效率,避免出现过于复杂的匹配模式导致性能问题。

除了使用正则表达式外,还可以结合其他易语言的字符串处理函数来实现文章内容的提取,比如使用InStr函数来定位关键词的位置,再配合SubStr函数来提取指定范围的内容。

总的来说,要在易语言中提取文章内容,可以利用正则表达式以及易语言提供的字符串处理函数来实现。

需要根据具体的需求和文章内容的特点来选择合适的方法,并且进行充分的测试和验证,以确保提取的准确性和可靠性。

Emeditor正则表达式教程

Emeditor正则表达式教程

EmEdi‎t or 正‎则表达式应‎用专题1‎在工作中,‎经常用到E‎m Edit‎o r来编辑‎纯文本文档‎。

最近接触‎了正则表达‎式,感受到‎其功能非常‎强大。

‎我现在想要‎实现这样一‎个功能,还‎没有比较好‎的解决办法‎:在一篇中‎英文混排的‎文档中,删‎除中文字符‎(包括标点‎)之间的空‎格,但英文‎单词之间及‎英文单词与‎字母之前的‎空格不能删‎除;仅删除‎全角或半角‎空格,不删‎除制表符。

‎求高人‎试一下。

‎以下是一‎些比较有用‎的正则表达‎式:^[‎\t]‎*\n‎这个正则表‎达式代表所‎有的空行,‎指含有零个‎或零个以上‎空格或制表‎符、以换行‎符结尾、不‎含其它字符‎的行。

(‎^|(?<‎=中国))‎.*?(?‎=中国|$‎)用正‎则表达式匹‎配特定字符‎串外的所有‎字符。

指除‎“中国”外‎的所有其它‎字符,类似‎于反选功能‎。

^[ ‎\t]+‎查找以‎上字符,并‎替换为空,‎可删除行首‎空白(包括‎全半角空格‎和制表符)‎。

[ ‎\t]+$‎查找以‎上字符,并‎替换为空,‎可删除行末‎空白(包括‎全半角空格‎和制表符)‎。

^[ ‎\t]+‎|[ \‎t]+$ ‎查找以上‎正则表达式‎,并替换为‎空,可删除‎行首和行末‎所有空白(‎包括全半角‎空格和制表‎符)。

匹‎配中文字符‎的正则表达‎式: [\‎u4e00‎-\u9f‎a5]‎评注:匹配‎中文还真是‎个头疼的事‎,有了这个‎表达式就好‎办了匹配‎双字节字符‎(包括汉字‎在内):[‎^\x00‎-\xff‎]评注‎:可以用来‎计算字符串‎的长度(一‎个双字节字‎符长度计2‎,ASCI‎I字符计1‎)匹配空‎白行的正则‎表达式:\‎n\s*\‎r评注‎:可以用来‎删除空白行‎匹配HT‎M L标记的‎正则表达式‎:< (\‎S*?)[‎^>]*>‎.*?|<‎.*? ‎/>评‎注:网上流‎传的版本太‎糟糕,上面‎这个也仅仅‎能匹配部分‎,对于复杂‎的嵌套标记‎依旧无能为‎力匹配首‎尾空白字符‎的正则表达‎式:^\s‎*|\s*‎$评注‎:可以用来‎删除行首行‎尾的空白字‎符(包括空‎格、制表符‎、换页符等‎等),非常‎有用的表达‎式匹配E‎m ail地‎址的正则表‎达式:\w‎+([-+‎.]\w+‎)*@\w‎+([-.‎]\w+)‎*\.\w‎+([-.‎]\w+)‎*评注‎:表单验证‎时很实用‎匹配网址U‎R L的正则‎表达式:[‎a-zA-‎z]+:/‎/[^\s‎]*评‎注:网上流‎传的版本功‎能很有限,‎上面这个基‎本可以满足‎需求匹配‎帐号是否合‎法(字母开‎头,允许5‎-16字节‎,允许字母‎数字下划线‎):^[a‎-zA-Z‎][a-z‎A-Z0-‎9_]{4‎,15}$‎评注:‎表单验证时‎很实用匹‎配国内电话‎号码:\d‎{3}-\‎d{8}|‎\d{4}‎-\d{7‎}评注‎:匹配形式‎如 051‎1-440‎5222 ‎或 021‎-8788‎8822‎匹配腾讯Q‎Q号:[1‎-9][0‎-9]{4‎,}评‎注:腾讯Q‎Q号从10‎000开始‎匹配中国‎邮政编码:‎[1-9]‎\d{5}‎(?!\d‎)评注‎:中国邮政‎编码为6位‎数字匹配‎身份证:\‎d{15}‎|\d{1‎8}评‎注:中国的‎身份证为1‎5位或18‎位匹配i‎p地址:\‎d+\.\‎d+\.\‎d+\.\‎d+评‎注:提取i‎p地址时有‎用匹配特‎定数字:‎^[1-‎9]\d*‎$‎//匹配正‎整数^‎-[1-9‎]\d*$‎ //‎匹配负整数‎^-?‎[1-9]‎\d*$‎ //匹‎配整数‎^[1-9‎]\d*|‎0$ /‎/匹配非负‎整数(正整‎数 + 0‎)^-‎[1-9]‎\d*|0‎$ /‎/匹配非正‎整数(负整‎数 + 0‎)^[‎1-9]\‎d*\.\‎d*|0\‎.\d*[‎1-9]\‎d*$‎//匹配‎正浮点数‎^-([‎1-9]\‎d*\.\‎d*|0\‎.\d*[‎1-9]\‎d*)$‎//匹配‎负浮点数‎^-?(‎[1-9]‎\d*\.‎\d*|0‎\.\d*‎[1-9]‎\d*|0‎?\.0+‎|0)$‎//匹配‎浮点数‎^[1-9‎]\d*\‎.\d*|‎0\.\d‎*[1-9‎]\d*|‎0?\.0‎+|0$‎ //匹‎配非负浮点‎数(正浮点‎数 + 0‎)^(‎-([1-‎9]\d*‎\.\d*‎|0\.\‎d*[1-‎9]\d*‎))|0?‎\.0+|‎0$/‎/匹配非正‎浮点数(负‎浮点数 +‎0)‎评注:处理‎大量数据时‎有用,具体‎应用时注意‎修正匹配‎特定字符串‎:^[‎A-Za-‎z]+$‎//匹配‎由26个英‎文字母组成‎的字符串‎^[A-‎Z]+$‎//匹配‎由26个英‎文字母的大‎写组成的字‎符串^‎[a-z]‎+$/‎/匹配由2‎6个英文字‎母的小写组‎成的字符串‎^[A‎-Za-z‎0-9]+‎$//‎匹配由数字‎和26个英‎文字母组成‎的字符串‎^\w+‎$//‎匹配由数字‎、26个英‎文字母或者‎下划线组成‎的字符串‎评注:最‎基本也是最‎常用的一些‎表达式^‎.*Joh‎n.*$ ‎匹配包括‎“John‎”的整行。

使用正则表达式进行文本处理的技巧

使用正则表达式进行文本处理的技巧

使用正则表达式进行文本处理的技巧正则表达式是一种强大的文本处理工具,可以在文本中进行匹配、替换和提取等操作。

在实际应用中,合理运用正则表达式可以提高工作效率和代码简洁性。

下面将介绍一些常用的正则表达式技巧。

1. 匹配数字- \d:匹配任意数字- \d+:匹配一个或多个连续的数字- \d{n}:匹配恰好n个连续的数字- \d{n,}:匹配至少n个连续的数字2. 匹配字母和数字- \w:匹配任意字母或数字- \w+:匹配一个或多个连续的字母或数字- \w{n}:匹配恰好n个连续的字母或数字- \w{n,}:匹配至少n个连续的字母或数字3. 匹配特殊字符- \s:匹配空白字符,包括空格、制表符和换行符等- \S:匹配非空白字符- \b:匹配单词的边界- \B:匹配非单词的边界- .:匹配任意字符(除了换行符)4. 匹配重复字符- {n}:匹配前一个字符恰好n次- {n,}:匹配前一个字符至少n次- {n,m}:匹配前一个字符至少n次但不超过m次 - *:匹配前一个字符零次或多次- +:匹配前一个字符一次或多次- ?:匹配前一个字符零次或一次5. 匹配多种选择- []:匹配方括号内的任意一个字符- [abc]:匹配a、b或c中的任意一个字符- [a-z]:匹配任意小写字母- [A-Z]:匹配任意大写字母- [0-9]:匹配任意数字- [^abc]:匹配除了a、b、c之外的任意字符6. 匹配位置- ^:匹配字符串的开头- $:匹配字符串的结尾- \A:匹配字符串的开头(忽略多行模式)- \Z:匹配字符串的结尾(忽略多行模式)- \b:匹配单词的边界- \B:匹配非单词的边界7. 匹配分组- ():创建一个匹配组- |:匹配两个或多个表达式之一8. 替换文本- re.sub(pattern, repl, string):使用repl替换string中与pattern匹配的内容9. 提取数据- re.findall(pattern, string):提取string中所有与pattern匹配的内容- re.search(pattern, string):在string中搜索与pattern匹配的内容(只返回第一个匹配结果)- re.match(pattern, string):从string的开头开始匹配与pattern的内容(只返回第一个匹配结果)10. 其他常用方法- re.split(pattern, string):根据pattern将string分割成列表- re.finditer(pattern, string):在string中搜索与pattern匹配的所有内容,并返回迭代器以上是关于正则表达式的一些常用技巧,通过合理运用这些技巧,可以轻松实现各种文本处理操作。

正则表达式语法及常用验证(转)

正则表达式语法及常用验证(转)

正则表达式语法及常⽤验证(转)正则表达式语法:字符说明\ 将下⼀字符标记为特殊字符、⽂本、反向引⽤或⼋进制转义符。

例如,“n”匹配字符“n”。

“\n”匹配换⾏符。

序列“\\”匹配“\”,“\(”匹配“(”。

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

如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。

$ 匹配输⼊字符串结尾的位置。

如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。

* 零次或多次匹配前⾯的字符或⼦表达式。

例如,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?'。

注意:您不能将空格插⼊逗号和数字之间。

当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“⾮贪⼼的”。

“⾮贪⼼的”模式匹配搜索到的、尽可能短的字符串,⽽默认的“贪⼼的”模式匹配搜索到的、尽可能长的字符串。

《易语言“正则表达式”教程》

《易语言“正则表达式”教程》

《易语言“正则表达式”教程》本文改编自多个文档,因此如有雷同,不是巧合。

“正则表达式”的应用范围越来越广,有了这个强大的工具,我们可以做很多事情,如搜索一句话中某个特定的数据,屏蔽掉一些非法贴子的发言,网页中匹配特定数据,代码编辑框中字符的高亮等等,这都可以用正则表达式来完成。

本书分为四个部分。

第一部分介绍了易语言的正则表达式支持库,在这里,大家可以了解第一个正则表达式的易语言程序写法,以及一个通用的小工具的制作。

第二部分介绍了正则表达式的基本语法,大家可以用上述的小工具进行试验。

第三部分介绍了用易语言写的正则表达式工具的使用方法。

这些工具是由易语言用户提供的,有的工具还带有易语言源码。

他们是:monkeycz、零点飞越、寻梦。

第四部分介绍了正则表达式的高级技巧。

目录《易语言“正则表达式”教程》 (1)目录 (1)第一章易语言正则表达式入门 (3)一.与DOS下的通配符类似 (3)二.初步了解正则表达式的规定 (3)三.一个速查列表 (4)四.正则表达式支持库的命令 (5)4.1 第1个正则表达式程序 (5)4.2 第2个正则表达式例程 (7)4.3 第3个例程 (8)4.4 一个小型的正则工具 (9)第二章揭开正则表达式的神秘面纱 (11)引言 (12)一. 正则表达式规则 (12)1.1 普通字符 (12)1.2 简单的转义字符 (13)1.3 能够与“多种字符”匹配的表达式 (14)1.4 自定义能够匹配“多种字符”的表达式 (16)1.5 修饰匹配次数的特殊符号 (17)1.6 其他一些代表抽象意义的特殊符号 (20)二. 正则表达式中的一些高级规则 (21)2.1 匹配次数中的贪婪与非贪婪 (21)2.2 反向引用\1, \2... (23)2.3 预搜索,不匹配;反向预搜索,不匹配 (24)三. 其他通用规则 (25)四. 其他提示 (27)第三章正则表达式工具与实例 (28)一.正则表达式支持库 (29)1.1 “正则表达式”数据类型 (29)1.2 “搜索结果”数据类型 (30)二.正则表达式实用工具 (30)2.1 一个成品工具 (30)2.2 易语言写的工具 (33)三.应用实例 (34)3.1 实例1 (34)3.2 实例2 (36)3.3 实例3 (37)3.4 实例4 (37)第四章正则表达式话题 (38)引言 (38)一. 表达式的递归匹配 (38)1.1匹配未知层次的嵌套 (38)1.2 匹配有限层次的嵌套 (39)二. 非贪婪匹配的效率 (40)2.1效率陷阱的产生 (40)2.2效率陷阱的避免 (41)附录: (42)一.17种常用正则表达式 (42)第一章易语言正则表达式入门一.与DOS下的通配符类似其实,所谓的“正则表达式”,是大家一直在使用的,记得吗?在搜索文件时,会使用一种威力巨大的武器——DOS通配符——“?”和“*”。

正则表达式使用工具教程

正则表达式使用工具教程

正则表达式使用工具教程正则表达式-教程正则表达式是烦琐的,但是它是强大的,在八爪鱼中,学会正则表达式的应用能让你的数据展示更加规范化,所提取数据字段表达更加精准。

合理的运用正则,除了提升你的数据展示规范、字段表达精准之外,还会给你带来绝对的成就感。

只要认真阅读本教程,结合八爪鱼正则表达式工具实战应用,掌握正则表达式是非常容易的。

内容列表:11.1正则表达式-简介11.2正则表达式-简单示例11.3-正则表达式-八爪鱼正则工具11.4正则表达式-语法11.5正则表达式-正则表达式及简单应用11.1正则表达式-简介正则表达式(Regular Expression),按英文直译是“规范化表达”,其作用是将复杂模糊的源数据通过正则表达式转化为简单直观的目标数据。

例如:“150ABCD”“一百五ABCD”“One hundred and fiftyABCD”分析思考过程:以上字符串中,我们的源文本数据分别为:““150ABCD”、“一百五ABCD”、“One hundred and fiftyABCD”假设我们要提取目标数据为:字符串中以数字开头的数据那么我们约束条件为:只取字符串中以数字开头的源数据将此约束条件转化为正则表达式为:[0-9](.+)\b其中,[0-9]的语义为开头1位为0-9开头,中间间隔以通配符“.”代替,(.+)语义为字符串长度不做限定,\b的语义为,匹配一个边界。

正则后的目标数据:“150ABCD”通过这个简单例子,我们大致了解到了为什么要用正则与正则所能实现的效果,讲通俗点就是,正则只是将我们的意愿(提取字符串中以数字开头的数据)以表达式的形式展现出来([0-9](.+)\b),并最终通过表达式匹配到所需要的目标数据(“150ABCD”),所以灵活运用正则,可以通过简单的方法实现强大的功能。

为什么要在八爪鱼中使用正则?在八爪鱼采集数据过程中,受限于网页HTML结构的原因,部分目标数据并不能单独提取出来,这时需要简单的搜索与替换操作来提取与预期搜索结果匹配的确切文本,除此之外,对数据要求精准规范的用户,还能通过正则表达式测试所提取数据字符串的模式、替换文本、基于匹配模式从字符串中提取子字符串等操作。

详解易语言的运算符及表达式

详解易语言的运算符及表达式

详解易语⾔的运算符及表达式以下内容给⼤家分享了关于易语⾔运算符和易语⾔表达式相关的知识点内容,⼀起来学习下。

1.易语⾔运算符易语⾔程序进⾏算术运算或关系⽐较操作时,需要使⽤运算符。

易语⾔运算符如下:程序中的运算符有其优先级别,在程序运⾏时按照符号的优先级别从⾼到低依次运算。

易语⾔运算符优先级别如下:易语⾔运算符优先级2.易语⾔表达式⽤运算符和括号将作为对象的各类数据连接起来,符合易语⾔语法规则的式⼦,称易语⾔表达式。

下⾯是⼀个表达式:变量1=((3×9-15÷3)-2)\8。

表达式中运算先后,是按照运算符的优先级别来的,计算步骤和结果是:变量1=((3×9-15÷3)-2)\8 第1步:内层⼩括号内乘除运算变量1=((27-5)-2)\8 第2步:内层⼩括号内减法运算变量1=(22-2)\8 第3步:外层⼩括号内减法运算变量1=20\8 第4步:20被8整除变量1=2 结果等于2运算级可以通过括号改变,括号中的表达式先计算;当出现括号嵌套时,最内层括号最先计算;括号内的运算符优先级不变。

3.赋值运算符和赋值表达式等号(=)是赋值运算符,在程序中给变量赋值或⽤代码改变组件属性,使⽤“=”进⾏赋值,将等号后⾯的值赋值给等号前⾯的赋值对象。

如:“变量1=10”、“编辑框1.⾼度=20”。

赋值运算符“=”和⽐较运算符“=”区别是:⼀般在易语⾔中的⼀条语句中,不被⼩括号包括的最左边个“=”代表赋值,且⼀条语句只有⼀个赋值,其它的“=”都是⽐较命令“等于”。

以上⼏篇博⽂,介绍易语⾔编程软件的基础知识。

当我们粗略地学习完这些基础知识,好像对易语⾔有个模糊的认识了。

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

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

正则表达式(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 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。

55分钟学会正则表达式

55分钟学会正则表达式

55分钟学会正则表达式什么是正则正则表达式是⼀种⽤来描述⼀定数量⽂本的模式,⽤来匹配相同规范样式的⽂本。

在JavaScript中⽤RegExp对象表⽰正则表达式( 即Regular Eexpression),它是对字符串执⾏模式匹配的强⼤⼯具。

正则表达式是⼀种查找以及字符串替换操作。

正则表达式在⽂本编辑器中⼴泛使⽤,⽐如正则表达式被⽤于:检查⽂本中是否含有指定的特征词找出⽂中匹配特征词的位置从⽂本中提取信息,⽐如:字符串的⼦串修改⽂本与⽂本编辑器相似,⼏乎所有的⾼级编程语⾔都⽀持正则表达式。

在这样的语境下,“⽂本”也就是⼀个字符串,可以执⾏的操作都是类似的。

⼀些编程语⾔(⽐如Perl,JavaScript)会检查正则表达式的语法。

正则表达式是什么?正则表达式只是⼀个字符串。

没有长度限制,但是,这样的正则表达式长度往往较短。

如下所⽰是⼀些正则表达式的例⼦:I had a \S+ day today[A-Za-z0-9\-_]{3,16}\d\d\d\d-\d\d-\d\dv(\d+)(\.\d+)*TotalMessages="(.*?)"<[^<>]>这些字符串实际上都是微型计算机程序。

正则表达式的语法,实际上是⼀种轻量级、简洁、适⽤于特定领域的编程语⾔。

记住这⼀点,那么你就很容易理解下⾯的事情:每⼀个正则表达式,都可以分解为⼀个指令序列,⽐如“先找到这样的字符,再找到那样的字符,再从中找到⼀个字符。

”每⼀个正则表达式都有输⼊(⽂本)和输出(匹配规则的输出,有时是修改后的⽂本)正则表达式有可能出现语法错误——不是所有的字符串都是正则表达式正则表达式语法很有个性,也可以说很恐怖有时可以通过编译,使得正则表达式执⾏更快在实现中,正则表达式还有其他的特点。

本⽂将重点讨论正则表达式的核⼼语法,在⼏乎所有的正则表达式中都可以见到这些规则。

特别提⽰:正则表达式与⽂件通配语法⽆关,⽐如 *.xml正则表达式的基础语法字符正则表达式中包含了⼀系列的字符,这些字符只能匹配它们本⾝。

[讲解]易语言正则表达示

[讲解]易语言正则表达示

易语言正则表达示支持库名称及版本:正则表达式支持库(2.0#0版)所支持语言:中文(大陆)该支持库实现了对正则表达式(Regular Expression)的支持。

注意,本支持库中的所有命令均为高级命令,要求使用者具有一定的正则表达式知识基础。

本库为一般支持库,需要易系统3.8版本的支持,需要系统核心支持库3.7版本的支持,提供了2种库定义数据类型,提供了17种命令。

操作系统需求: Windows、Linux、Unix----- 支持库的作者信息 -----作者姓名:大有吴涛易语言软件公司邮政编码:116001通信地址:辽宁省大连市中山区人民路55号亚太国际金融中心电话号码:+86(0411)39895831传真号码:+86(0411)39895834电子信箱:****************.cn主页地址:其它信息:祝您一帆风顺,心想事成!--- 库定义数据类型列表 ---数据类型名称:正则表达式英文名称:regex本数据类型为普通类型,共包含 11 个成员命令, 1 个成员变量。

操作系统需求: Windows、Linux、Unix一个正则表达式(regular expression)描述了一种文本匹配的模式,可以被用来检查一段文本是否符合某种特定的格式(匹配模式)或在一段文本中寻找、提取特定格式的子文本等。

比如校验一段文本是否为有效的URL地址、从文本文件中提取所包含的E-Mail地址(请参考本支持库附带的例程)。

关于正则表达式的更多知识,请查阅相关的书籍、资料。

成员<2>的中文名称为“多行模式”,英文名称为“MultiLine”,类型为“逻辑型(bool)”,初始值为“真”。

指定在搜索、替换时,是否使用多行模式。

如果本成员值为真,字符“^”不仅匹配目标文本的开头,而且匹配目标文本中换行符(字符(10),字符(13)或 #换行符)的后面;字符“$”不仅匹配目标文本的结尾,而且匹配目标文本中换行符的前面。

使用正则表达式进行文本处理

使用正则表达式进行文本处理

使用正则表达式进行文本处理正文:正则表达式(Regular Expression)是一种用于字符串匹配和处理的强大工具,可以通过定义搜索模式,从原始文本中提取出满足特定条件的内容。

在文本处理中,正则表达式能够快速高效地实现字符串的匹配、替换、分割和提取等操作,极大地方便了数据处理工作。

一、正则表达式基础正则表达式是由普通字符(例如字母、数字和标点符号)和特殊字符(例如元字符和限定字符)组成的文本模式。

下面介绍几个常用的元字符和限定字符:1. 元字符:- . (点):匹配任意单个字符,除了换行符\n。

- ^ (脱字符):匹配字符串的开头。

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

- [] (方括号):匹配括号中任意一个字符。

- () (圆括号):标记子表达式的开始和结束位置。

- | (管道符):用于匹配多个表达式中的一个。

2. 限定字符:- * (星号):匹配前面的模式零次或多次。

- + (加号):匹配前面的模式一次或多次。

- ? (问号):匹配前面的模式零次或一次。

- {n}:匹配前面的模式恰好 n 次。

- {n,}:匹配前面的模式至少 n 次。

- {n,m}:匹配前面的模式至少 n 次但不超过 m 次。

二、正则表达式的应用1. 字符串的匹配正则表达式可以用来判断一个字符串是否满足特定的模式。

示例代码如下:``` pythonimport repattern = r"hello"text = "hello world"result = re.match(pattern, text)if result:print("匹配成功")else:print("匹配失败")```2. 字符串的替换正则表达式可以方便地进行字符串的替换,将符合某个模式的字符串替换成指定的内容。

示例代码如下:``` pythonimport repattern = r"apple"text = "I have an apple"result = re.sub(pattern, "orange", text)print(result) # 输出:I have an orange```3. 字符串的分割正则表达式可以根据指定的模式将字符串分割成多个子串。

  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' 之前的位置。

相关文档
最新文档