当前位置:文档之家› 正则表达式引擎原理

正则表达式引擎原理

正则表达式引擎原理

正则表达式引擎是一种用于匹配字符串模式的工具,它的原理包括以下几个方面:

1. 语法分析:正则表达式引擎首先对输入的正则表达式进行语法分析,将其转化为一个语法树或者其他等效的数据结构。这个过程通常使用正则表达式的文法规则和解析算法来完成。

2. 自动机构造:将语法树或其他等效数据结构转换为一个能够高效匹配字符串的自动机。常见的自动机包括确定性有限状态机(DFA)和非确定性有限状态机(NFA)。这个过程通常使用子集构造算法或者Thompson构造算法。

3. 匹配过程:将输入的待匹配字符串与自动机进行匹配。匹配过程可以使用不同的算法来实现,包括最长前缀匹配、最长后缀匹配、回溯法等等。不同的算法在时间复杂度和空间复杂度上可能有不同的表现。

4. 匹配结果处理:一旦匹配成功,正则表达式引擎会返回匹配的结果或者执行相应的操作。这个过程包括获取匹配文本、替换文本、提取匹配组等等。

正则表达式引擎的原理可以通过以上步骤来理解,不同的引擎可能在实现细节上有所差异,但基本的原理是相通的。

正则表达式语言 - 快速参考

正则表达式语言?-?快速参考 正则表达式是正则表达式引擎尝试匹配输入文本的一种模式。?模式由一个或多个字符文本、运算符或构造组成。 字符转义 正则表达式中的反斜杠字符?(\)?指示其后跟的字符是特殊字符(如下表所示),或应按原义解释该字符。?有关更多信息,请参见正则表达式中的字符转义。

字符类 字符类与一组字符中的任何一个字符匹配。?字符类包括下表中列出的语言元素。?有关更多信息,请参见正则表达式中的字符类。

定位点 定位点或原子零宽度断言会使匹配成功或失败,具体取决于字符串中的当前位置,但它们不会使引擎在字符串中前进或使用字符。?下表中列出的元字符是定位点。?有关更多信息,请参见正则表达式中的定位点。 分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。?分组构造包括下表中列出的语言元素。?有关更多信息,请参见正则表达式中的分组构造。

限定符 限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。?限定符包括下表中列出的语言元素。?有关更多信息,请参见正则表达式中的限定符。

反向引用构造 反向引用允许在同一正则表达式中随后标识以前匹配的子表达式。?下表列出了?.NET?Framework?的正则表达式支持的反向引用构造。?有关更多信息,请参见正则表达式中的反向引用构造。 替换构造用于修改正则表达式以启用?either/or?匹配。?这些构造包括下表中列出的语言元素。?有关更多信息,请参见正则表达式中的备用构造。

替换 替换是替换模式中支持的正则表达式语言元素。?有关更多信息,请参见正则表达式中的替代。?下表中列出的元字符是原子零宽度断言。 正则表达式选项 可以指定控制正则表达式引擎如何解释正则表达式模式的选项。?其中的许多选项可以指定为内联(在正则表达式模式中)或指定为一个或多个?RegexOptions?常量。?本快速参考仅列出内联选项。?有关内联和?RegexOptions?选项的更多信息,请参见文章正则表达式选项。 可通过两种方式指定内联选项: 通过使用杂项构造(?imn s x-imn s x),可以用选项或选项组前的减号?(-)?关闭这些选项。?例如,(?i-mn)?启用不区分大小写

发动机号正则表达式

发动机号正则表达式 随着汽车行业的迅猛发展,汽车已成为人们生活中不可或缺的一部分。在汽车的日常使用中,发动机是汽车的核心部件之一。而发动机 号则是发动机中最重要的识别信息,能够帮助车主、4S店或者保险公 司准确识别汽车辆。本文将介绍发动机号正则表达式。 一、什么是发动机号 发动机号,是发动机的唯一标识码,也叫做引擎号或者发动机序列号。一般车主可以在车辆行驶证上找到发动机号,而在一些品牌的汽车上,还有单独的发动机号标识。发动机号一般由数字和字母组成,具有唯 一性,不同的发动机号表示不同的发动机。 二、正则表达式 发动机号在不同的汽车品牌上有不同的表示方式,因此需要使用不同 的正则表达式来匹配。下面是常见汽车品牌的发动机号的正则表达式,供大家参考: 1. 宝马发动机号正则表达式:^[A-Za-z]{2}[0-9]{6}$ 解析:第一位和第二位为英文字母,后面六位为数字。 2. 奔驰发动机号正则表达式:^[A-Za-z0-9]+$

解析:由字母和数字组成,不限制位数。 3. 大众发动机号正则表达式:^[A-Za-z0-9]{6}$ 解析:六位由字母和数字组成。 4. 丰田发动机号正则表达式:^[A-Za-z0-9]{10}$ 解析:由字母和数字组成,共十位。 5. 日产发动机号正则表达式:^[A-Za-z0-9]{12}$ 解析:由字母和数字组成,共十二位。 6. 本田发动机号正则表达式:^[A-Za-z0-9]{17}$ 解析:由字母和数字组成,共十七位。 三、应用场景 发动机号正则表达式可以用于很多场景,比如: 1. 车主在二手车交易时,可以对发动机号进行比对,判断是否为正品。

实现字符串匹配算法,支持正则表达式(JavaScript)

实现字符串匹配算法,支持正则表达式 (JavaScript) 字符串匹配算法是计算机科学领域中的一个重要问题,它用于在文本中查找一个模式是否存在。在实际开发中,我们经常会遇到需要判断一个字符串是否符合某种规则或者包含某个特定的子串的问题,这时就需要使用字符串匹配算法来解决。 在这篇文章中,我们将讨论字符串匹配算法,并且会介绍如何利用正则表达式来实现字符串匹配。我们首先会介绍一些常见的字符串匹配算法,例如暴力匹配算法、KMP算法等,然后我们会详细讨论正则表达式的使用和实现。最后,我们会举一些例子来说明如何在实际开发中应用这些算法和技术。 一、常见的字符串匹配算法 1.暴力匹配算法 暴力匹配算法是最简单的一种字符串匹配算法,它的原理是从文本的第一个字符开始,依次比较文本和模式串的每一个字符,如果遇

到不匹配的字符,则将文本串的指针向后移动一位,再次从头与模式 串进行比较。这种算法的时间复杂度是O(m*n),其中m和n分别表示 文本串和模式串的长度。 2. KMP算法 KMP算法是一种高效的字符串匹配算法,它的核心思想是利用已经匹配过的信息来减少比较次数。具体来说,KMP算法通过求取模式串的最长公共前缀和后缀来进行优化,从而避免不必要的回溯。这样一来,KMP算法的时间复杂度就能够降到O(m+n)。 3. Boyer-Moore算法 Boyer-Moore算法是一种基于坏字符规则和好后缀规则的高效字符串匹配算法。它的核心思想是利用坏字符出现的位置来进行快速的模 式串移动,从而减少比较次数。相比于暴力匹配算法和KMP算法,Boyer-Moore算法在实际应用中通常能够获得更好的性能。 以上介绍的三种算法都是比较经典的字符串匹配算法,它们各自 有着不同的优缺点,在不同的场景中有着不同的适用性。 二、正则表达式的概念和基本语法

new bing 原理讲解

new bing 原理讲解 引言 搜索引擎在现代社会起到了举足轻重的作用,为人们提供了获取信息和解决问题的重要工具。Bing作为谷歌之外最为知名的搜索引擎之一,其背后的原理是如何实 现的呢?本文将对Bing的原理进行全面、详细、完整且深入的探讨。 搜索引擎的基本原理 搜索引擎的基本原理是根据用户输入的关键词,在搜索引擎的数据库中查找相关的网页,并按照一定的规则进行排序和展示。搜索引擎的原理可以分为三个主要步骤:爬取、索引和检索。 1. 爬取 爬取是指搜索引擎通过自动化程序(蜘蛛或爬虫)在互联网上抓取网页的过程。爬虫会从一个起始页面开始,通过页面上的链接逐步遍历整个互联网。爬取过程中,爬虫会收集网页的URL、标题、内容和其他重要信息。 2. 索引 索引是将爬取到的网页进行处理和组织,以便后续的检索。在索引过程中,搜索引擎会对网页进行去重、分词和建立倒排索引等操作。倒排索引是搜索引擎中非常重要的组成部分,通过该索引可以快速定位包含关键词的网页。 3. 检索 当用户输入关键词进行搜索时,搜索引擎会根据索引中的信息找到相关的网页,并按照一定的算法对网页进行排序。在排序过程中,搜索引擎会考虑网页的相关性、权威性和用户体验等因素。最终,搜索引擎会将排序好的网页结果展示给用户。

Bing的原理 Bing作为微软旗下的搜索引擎,其原理与其他搜索引擎基本类似,但也有自己的 特点。 1. 爬取 Bing的爬取过程主要分为四个步骤:种子URL生成、URL抓取、页面下载和页面解析。 •种子URL生成:Bing会从一些预定义的种子URL开始爬取网页,种子URL 通常是一些知名的网站或已知的高质量网页。 •URL抓取:Bing的爬虫会通过正则表达式或其他方法提取页面中的URL,并加入待爬取队列中。 •页面下载:爬虫会下载待爬取队列中的网页,并保存到Bing的服务器上。•页面解析:Bing会对下载下来的网页进行解析,提取出其中的内容和其他重要信息。 2. 索引 Bing的索引过程包括去重、分词和建立倒排索引三个主要步骤。 •去重:Bing会对爬取到的网页进行去重操作,以避免重复索引相同的内容。•分词:Bing会对网页的内容进行分词,将文本切分成有意义的词语,便于后续的检索。 •建立倒排索引:Bing使用倒排索引的方式存储和管理网页信息。倒排索引是一种将关键词映射到网页的数据结构,它可以快速定位包含某个关键词的 网页。 3. 检索 Bing的检索过程与其他搜索引擎的原理类似,主要包括关键词匹配和排序两个步骤。 •关键词匹配:当用户输入关键词进行搜索时,Bing会将用户输入的关键词与建立好的倒排索引进行匹配,找到相关的网页。 •排序:Bing会根据一定的算法对匹配到的网页进行排序,以提供最相关和最有价值的结果给用户。排序算法通常会考虑网页的相关性、权威性、用户 体验和其他因素。

js replace正则

js replace正则 jsreplace正则是JavaScript中常用的一种解析字符串的方法,它可以实现特定的字符串操作,使得字符串替换、拆分等操作更加灵活方便。本文将会结合实际应用,详细讲解js replace正则的用法,以及如何使用它来达到我们需要的效果。 首先,js replace正则是JavaScript中一种实现字符串替换操作的方法,也可以被当作一种搜索替换引擎,使得我们可以更加准确灵活地实现字符串替换。js replace正则的核心是正则表达式,我们可以使用它来搜索某个字符串,从而实现替换的需求。 具体来说,js replace正则首先需要我们定义好一个正则表达式,用来匹配要替换的字符串,这个正则表达式的格式为“/正则表达式/替换字符串”,比如js replace正则的示例代码: let str = Hello World str = str.replace(/Hello/g, Goodbye console.log(str); // Goodbye World 在上面的示例代码中,我们首先定义一个字符串str,该字符串为“Hello World”。接着,我们使用replace函数替换它,正则表达式为/Hello/g,替换字符串为Goodbye,打印出结果“Goodbye World”。 此外,js replace正则还可以使用函数来实现替换,具体来说,replace函数可以接受一个函数参数,这样就可以使用函数来定义替换字符串,示例代码如下: let str = Hello World

str = str.replace(/World/g, function (str) { return JavaScript }); console.log(str); // Hello JavaScript 上面的示例代码中,我们又定义了一个字符串str,字符串内容为“Hello World”,接着,我们使用replace函数,正则表达式为/World/g,替换字符串为一个函数,该函数未参数str,函数返回值为“JavaScript”,打印出结果“Hello JavaScript”。 另外,js replace正则还可以使用正则表达式来拆分字符串,拆分的方式有两种,一种是使用正则表达式+split函数来拆分,代码如下: let str = js,replace,reg let arr = str.split(/,/); console.log(arr); // [js replace reg 在上面的示例代码中,我们首先定义一个字符串str,字符串内容为“js,replace,reg”。接着,我们使用split函数,正则表达式为/,/,实现字符串拆分,最终得到拆分后的结果,输出结果为[js replace reg。 另一种拆分方式是使用正则表达式+replace函数来实现,代码如下: let str = js,replace,reg let arr = str.replace(/,/g, ).split( );

正则表达式题目

正则表达式题目 摘要: 1.介绍正则表达式的概念和作用 2.讲解正则表达式的基本语法 3.举例说明正则表达式的应用场景 4.总结正则表达式的重要性和使用技巧 正文: 一、正则表达式的概念和作用 正则表达式(Regular Expression),简称regex,是一种用于匹配字符串模式的字符集,通常用于文本搜索和数据提取工具中,可以高效地查找和处理大量数据。正则表达式能够实现字符串的查找、替换、分割等功能,极大地提高了文本处理的效率。 二、正则表达式的基本语法 正则表达式的基本语法包括以下几种元素: 1.字面字符:例如abc、123 等,表示与字符本身相等的字符。 2.元字符:例如.、*、+、?等,表示特定的意义。 3.字符类:例如[a-zA-Z] 表示所有英文字母,[0-9] 表示所有数字等。 4.量词:例如*、+、?等,表示字符或字符类出现的次数。 5.分组和捕获:使用圆括号表示一个字符或字符类的组合,可以进行分组和捕获。 6.选择:使用竖线表示选择,例如a|b 表示匹配a 或b。

三、正则表达式的应用场景 正则表达式在许多场景下都有广泛应用,例如: 1.文本搜索:在搜索引擎中,可以使用正则表达式来精确匹配和搜索特定的关键词或短语。 2.数据提取:在网页抓取、数据迁移等场景中,可以使用正则表达式来提取需要的数据,例如提取网页中的链接、电话号码等。 3.验证输入:在用户输入验证中,可以使用正则表达式来检查用户输入的格式是否符合要求,例如检查邮箱地址、手机号码等。 四、总结 正则表达式是一种非常强大的文本处理工具,熟练掌握正则表达式对于文本处理和数据分析工作非常有帮助。

正则匹配所有文字的方法

正则匹配所有文字的方法 正则表达式(Regular Expression,简称:Regex)是一种强大的文本处理工具,广泛应用于字符串的搜索、替换、校验等场景。在本文中,我们将探讨如何使用正则表达式来匹配所有文字内容。 ### 正则表达式简介 正则表达式是一种由普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")组成的字符串模式。它主要用于字符串的搜索、替换以及复杂的字符串模式匹配。 ### 匹配所有文字的方法 要使用正则表达式匹配所有文字,我们可以使用以下方法: #### 1.使用点号(`.`)元字符 点号(`.`)在正则表达式中表示除了换行符(` `)以外的任意单个字符。要匹配所有的文字,包括换行符,你需要启用“点号匹配换行符”的模式。 示例: ```regex [sS]*? ``` 解释: - `[sS]`:匹配任意单个字符,无论它是空白字符(`s`)还是非空白字符(`S`)。

- `*`:表示匹配前面的子表达式零次或多次。 - `?`:使得`*`变为非贪婪模式,即尽可能少地匹配字符。 #### 2.使用`.*`(非贪婪模式) 在许多正则表达式引擎中,默认情况下点号(`.`)不匹配换行符。如果你想匹配一行内的所有文字,可以使用以下模式: ```regex .* ``` 但是,由于`*`是贪婪的,它会匹配尽可能多的字符。通常,我们希望它尽可能少地匹配字符,因此可以结合使用`?`来实现非贪婪模式: ```regex .*? ``` #### 3.使用特定语言的正则表达式特性 在某些正则表达式引擎中,可以使用特定的标志或选项来改变匹配行为,例如: - 在JavaScript中,使用`/s`标志(允许点号匹配任意字符,包括换行符): ```javascript /.*?/gs ``` - 在Python中,使用`re.DOTALL`标志:

java 字符串正则表达式匹配的方法

java 字符串正则表达式匹配的方法 在Java中,我们可以使用正则表达式来匹配字符串。正则表达式是一种强大的工具,可以用于检查字符串是否符合特定的模式。 Java中提供了一个内置的正则表达式引擎,可以通过java.util.regex包中的类来实现字符串的正则匹配。以下是一些常用的方法: 1. matches()方法:该方法用于检查整个字符串是否与正则表达式匹配。它返回 一个布尔值,如果匹配成功则返回true,否则返回false。例如: ```java String str = "Hello World"; boolean match = str.matches("He.*ld"); // 匹配以"He"开头,以"ld"结尾的字符串System.out.println(match); // 输出:true ``` 2. find()方法:该方法用于在字符串中查找匹配正则表达式的子串。它返回一 个布尔值,如果找到匹配的子串则返回true,否则返回false。例如: ```java String str = "Hello World"; Pattern pattern = https://www.doczj.com/doc/b619123576.html,pile("o"); Matcher matcher = pattern.matcher(str); while (matcher.find()) { System.out.println("匹配到:" + matcher.group()); // 输出:匹配到:o } ``` 3. replaceAll()方法:该方法用于将匹配正则表达式的子串替换为指定的字符串。它返回一个新的字符串,替换所有匹配的子串。例如: ```java String str = "Hello World";

正则表达式语法 贪婪模式

正则表达式语法贪婪模式 贪婪模式是一种默认的正则表达式匹配模式,它试图尽可能多地匹配输入。在贪婪模式下,正则表达式引擎会尽可能多次地尝试匹配符合模式的输入。如果出现多个可能匹配的选择,引擎会尝试尽可能多地匹配最长的那个。 例如,对于正则表达式`a.*b`,在贪婪模式下,如果输入为"a1b2c3b4",引擎会尝试匹配"a1b2c3b",因为它是最长的符合模式的子串。 在正则表达式中,可以使用一些符号来控制贪婪模式的行为: - `.*`表示匹配任意字符任意次数,会尽可能多地匹配,可以使用`.*?`表示匹配最少次数。 - `+`表示匹配前一个字符或子表达式一次或多次,也可以使用`+?`表示匹配一次或者最少次数。 - `?`表示匹配前一个字符或子表达式零次或一次,也可以使用`??`表示匹配零次或最少次数。 例子: ```python import re text = "abcde" pattern = r"a.*e" # 贪婪模式 match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"abcde"

pattern = r"a.*?e" # 非贪婪模式 match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"abe" pattern = r"a.+e" # 贪婪模式 match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"abcde" pattern = r"a.+?e" # 非贪婪模式match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"abe" pattern = r"a.?e" # 贪婪模式 match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"abcde" pattern = r"a.??e" # 非贪婪模式 match_obj = re.match(pattern, text) print(match_obj.group()) # 输出"ae" ```

正则表达式 $用法

正则表达式$用法 摘要: 1.正则表达式的概念与用途 2.正则表达式的基本语法 3.量词与分组 4.选择与分组 5.非贪婪与贪婪匹配 6.正向与负向预查 7.零宽断言与零宽负向预查 8.反向引用与捕获组 9.字符类与范围 10.锚点与环视 11.贪婪与懒惰匹配 12.示例与实践 正文: 正则表达式(Regular Expression),简称regex,是一种强大的文本处理工具。它可以用来检查字符串是否符合某种模式、提取字符串中的特定部分或者替换字符串中的某些内容。正则表达式的核心是包含特殊字符和元字符的文本模式,这些模式描述了要匹配的字符集。正则表达式广泛应用于计算机科学和编程领域,如文本编辑器、搜索引擎、数据验证等。 正则表达式的基本语法包括以下几个部分:

1.字符类:用方括号表示,如[a-zA-Z],表示匹配小写字母或大写字母。 2.范围:用圆括号表示,如(abc)|(def),表示匹配a、b、c 或d、e、f。 3.点:表示匹配任意单个字符。 4.星号:表示匹配零个或多个前面的字符。 5.加号:表示匹配一个或多个前面的字符。 6.问号:表示匹配零个或一个前面的字符。 7.美元符号:表示匹配换行符。 8.管道符:表示匹配两个字符之一。 9.括号:表示分组,用于限制匹配的顺序。 量词与分组是正则表达式中非常重要的概念。量词用于指定要匹配的字符数量,如*、+、?等。分组用于将正则表达式的一部分组合在一起,通常用圆括号表示。分组可以用于限制匹配的顺序、改变量词的作用范围等。 选择与分组是正则表达式中的高级功能,它们允许我们根据不同的条件选择不同的匹配方式。选择使用竖线符号(|)表示,分组使用圆括号表示。例如,(abc)|(def) 表示匹配a、b、c 或d、e、f。 非贪婪与贪婪匹配是正则表达式中的重要概念。非贪婪匹配使用问号(?)或星号(*)表示,只匹配尽可能少的字符。贪婪匹配使用星号(*)表示,尽可能多地匹配字符。在实际应用中,非贪婪匹配往往比贪婪匹配更有效。 正向与负向预查是正则表达式中的高级功能,它们允许我们跳过字符串的一部分,以便更高效地匹配。正向预查使用波浪线符号(^)表示,负向预查使用反斜杠符号()表示。例如,^abc 表示从字符串的开头开始匹配a、

正则子模式

子模式(subpatterns)与逆向引用(Back references) 正则表达式可以包含多个字模式,子模式由圆括号定界,可以嵌套。这也是两个元字符“(”和“)”的作用。子模式可以有以下作用: 1. 将多选一的分支局部化。 例如,模式: cat(aract|erpillar|)匹配了"cat","cataract" 或"caterpillar" 之一,没有圆括号的话将匹配"cataract","erpillar" 或空字符串。 2. 将子模式设定为捕获子模式(例如上面这个例子)。当整个模式匹配时,目标字符串中匹配了子模式的部分可以通过逆向引用进行调用。左圆括号从左到右计数(从 1 开始)以取得捕获子模式的数。 注意,子模式是可以嵌套的,例如,如果将字符串"the red king" 来和模式/the ((red|white) (king|queen))/进行匹配,捕获的子串为"red king","red" 以及"king",并被计为1,2 和3 ,可以通过“\1”,“\2”,“\3”来分别引用它们,“\1”包含了“\2”和“\3”,它们的序号是由左括号的顺序决定的。 在一些老的linux/unux工具里,子模式使用的圆括号需要用反斜线转义,向这种\(subpattern\),但现代的工具已经不需要了,本文中使用的例子都不进行转义。 非捕获子模式(non-capturing subpatterns) 用一对括号同时完成上面提到的子模式的两个功能有时会出现一些问题,例如,由于逆向引用的数目是有限的(通常最大不超过9),而且经常会遇到无需捕获的子模式定义。这时,可以在开始的括号后加上问号和冒号来表示这个子模式无需捕获,就向下面这样:((?:red|white) (king|queen))。 如果将“the white queen”作为模式匹配的目标字符串,则捕获的字串有“white queen”和“queen”,分别作为“\1”和“\2”,white虽然符合子模式“(?:red|white)”,但并不被捕获。 我们前面已经介绍过用括号与问号表示模式修正符的方法,为方便起见,如果需要在非捕获子模式中插入模式修正符,可以把它直接放在问号和冒号之间,例如,下面两个模式是等效的。 /(?i:saturday|sunday)/和/(?:(?i)saturday|sunday)/。 逆向引用(Back references) 前面介绍反斜线作用时,已经提到它的一个作用就是表示逆向引用,当字符类之外的反斜线后跟一个大于0的十进制数时,它很有可能是一个逆向引用。它的含义正如它的名称如言,它表示对它出现之前已经捕获的子模式的引用。这个数字代表了它引用的左括号在模式

c++的正则表达式

c++的正则表达式 C++ 标准库支持多种c++的正则表达式 1。本主题介绍在使用正则表达式时可用的语法变体。 c++的正则表达式 1 要使用的c++的正则表达式 1是通过使用一个 std::regex_constants::syntax_option_type 枚举值来指定的。这些c++的正则表达式 1在 std::regex_constants 中进行定义: •ECMAScript:最接近 JavaScript 和 .NET 语言使用的 语法。 •basic:POSIX basic 正则表达式或 BRE。 •extended:POSIX extended 正则表达式或 ERE。 •awk:这是 extended 的,但它具有更多对非打印字符的转义。 •grep:这是 basic 的,但它也允许换行符 (\n) 字符分隔分支结构。 •egrep:这是 extended 的,但它也允许换行符字符分隔分支结构。 默认情况下,如果未指定语法,则假定为 ECMAScript。只能指定一个语法。 还可以应用几个标志: •icase:匹配时忽略大小写。 •nosubs:忽略标记的匹配项(即括号中的表达式);不 存储任何替代项。 •optimize:加快匹配速度,代价是构造时间可能更长。

•collate:使用区分区域设置的排序规则序列(例如 [a-z] 形式的范围)。 零个或多个标志可以与语法组合,以指定正则表达式引擎行为。如果仅指定标志,则假定语法为 ECMAScript。 元素 元素可以是下列项之一: •一般字符,可匹配目标序列中的相同字符。 •通配符 '.',可匹配目标序列中除换行符以外的任何字 符。 •[expr] 形式的括号表达式,可匹配目标序列中已包含在表达式 expr 定义的集合内的字符或排序规则元素;或 采用 [^expr] 形式,可匹配目标序列中未包含在表达式expr 定义的集合内的字符或排序规则元素。 表达式 expr 可以包含下列项的任意组合: o单个字符。将该字符添加到 expr 定义的集合。 o ch1-ch2 形式的字符范围。将闭范围 [ch1, ch2] 中的值所表示的字符添加到 expr 定义的集合。 o[:name:] 形式的字符类。将命名类中的字符添加 到 expr 定义的集合。 o[=elt=] 形式的等价类。将等效于 elt 的排序规 则元素添加到 expr 定义的集合。 o[.elt.] 形式的排序规则符号。将排序规则元素 elt 添加到 expr 定义的集合。

相关主题
文本预览
相关文档 最新文档