术语表
ASCII 美国信息交换标准代码(American Standard Code for Information Interchange)。它是1960年制定的一种针对英文(拉丁)字符的编码方案,含有128个字符。另见Unicode。
BRE 见基本正则表达式。
ed 实现正则表达式的一种Unix行编辑器,由Ken Thompson于1971年开发。它是sed和vi的前身。
ERE 见扩展正则表达式。
grep 使用正则表达式来查找字符串的Unix命令行工具。grep是由Ken Thompson于1973年开发,据说是由ed编辑器命令g/re/p(global/regular expression/print)发展而来。grep后来被egrep(或grep -E)取代,后者拥有更多元字符,如|、+、?、(和),但并没有被淘汰。grep使用基本正则表达式,grep -E(或egrep)使用扩展正则表达式。fgrep(grep -F)使用文字字符串来查找文件,而像$、*和|这样的元字符没有特殊含义。见基本正则表达式、 扩展的正则表达式。
Perl 一种通用程序设计语言,它由Larry Wall于1987年开发。Perl由于其对正则表达式的强大支持以及文本处理能力而闻名。见http://www.perl.org。
piece(片段)
在POSIX.1的术语中,为正则表达式的一部分,通常是连接起来的。参见POSIX。
POSIX Unix可移植操作系统接口(Portable Operating System Interface for Unix)。由电子电气工程师协会(IEEE)制定的一系列有关Unix的标准。最近的正则表达式POSIX标准是POSIX.1-2008(参见http://standards.ieee.org/findstds/standard/1003.1-2008.html)。
sed 一种接受正则表达式并对文本进行转换的Unix流编辑器。20世纪70年代初由Lee McMahon于贝尔实验室开发。sed的一个示例:sed -n 's/this/that/g\' file.ext > new.ext。sed的 -E选项表示要使用扩展正则表达式。另见扩展正则表达式。
Unicode Unicode是一个将世界的各种书写系统字符进行编码的体系。Unicode中的每个字符都有一个数值代码点。Unicode支持的字符超过10万个。在正则表达式中,Unicode字符可指定为\uxxxx或\x{xxxx},其中x表示一个范围为0-9、A-F(或a-f)的十六进制数,占用一位到四位。例如,\u00E9表示字符é,即小写拉丁字母e加一个重音符。另见http://www.unicode.org。
vi Bill Joy于1976年开发的一款使用正则表达式的Unix编辑器。vim编辑器是vi的改良版本,它最初由Bram Moolenaar开发(见http://www.vim.org)。我日常工作中通常会用到六七种编辑器,但用得最多的还是vim。事实上,如果我不幸遭遇海难流落到荒岛上,但还可以选择一个文本编辑器,我肯定会选择vim,毫无疑问。
vim 见vi。
八进制字符(octal character)
正则表达式中的字符可以使用八进制表示。在正则表达式中,八进制形式的字符通过以下方法指定:[\oxx]\o_*xx*_,其中x表示1-9范围内的数,占用一位或两位。例如,\o表示字符é,小写拉丁字母e外加一个重音符。
标记符(flag)
见修饰符。
捕获分组(capturing group)
见分组。
出现约束(occurrence constraint)
见量词。
代码点(code point)
见Unicode。
断言(assertion)
参见零宽度断言。
分类表达式(bracketed expression)
方括号中的正则表达式,如[a-f],即为a到f范围内的小写字母。另见字符组。
分支(branch)
在POSIX.1的术语中,表示正则表达式中多个部分的连接。另见POSIX。
分组(group)
分组将正则表达式原子组合放入一对括号()中。在grep或sed等应用程序中(不使用-E),你必须在括号前加一个反斜线,就像\)和\(。分组有捕获分组和非捕获分组两种。捕获分组将捕获的分组存储在内存中以便再次使用,而非捕获分组不会存储。原子分组不进行回溯。另见原子分组。
工作缓冲区(work buffer)
见模式空间。
反前瞻(negative lookahead)
见前瞻。
反后顾(negative lookbehind)
见后顾。
非捕获分组(non-capuring group)
在括号中不被捕获(即存储于内存以便将来使用)的分组。非捕获分组的语法是(?:pattern)。另见分组。
后顾(lookbehind)
一种正则表达式,它仅在另一个指定的正则表达式在其之前时才会匹配。正后顾使用语法(?<=regex)regex。反后顾表示在该表达式之前的内容不是在其之前的正则表达式时才匹配。使用语法(?<!regex)regex。
后向引用(backreference)
对之前用括号捕获的正则表达式内容进行引用,其形式是\1、\2等。
环视(lookaround)
见前瞻、后顾。
回溯 (backtracking)
逐个字符回退,逐个尝试从而找到成功的匹配。用于贪心式匹配,不能在懒惰式或者占有式匹配中使用。正则表达式处理器数千次尝试匹配耗费非常多的计算资源会导致灾难性回溯。避免灾难性回溯的一种方法就是使用原子分组。另见原子分组、 贪心式匹配、 懒惰式匹配、 占有式匹配。
基本正则表达式(basic regular expression)
正则表达式的一种早期实现方式,较为落后,多数人认为它已经过时。一般简称为BRE,BRE要求对字符转义后才可作为元字符使用,例如括号(\{和\})。另见扩展正则表达式。
可组合性(composability)
“一种模式语言(或实际的程序设计语言)提供一些原子对象和一些构造方法。这些构造方法可以用来将原子对象组合为复合对象,然后这些复合对象又可以进一步组合为复合对象。语言的可组合性就是指构造的多种方法能够统一适用于该语言的所有对象,无论是原子对象还是复合对象……可组合性改善了易学性和易用性。可组合性还可能改善复杂度与功能之间的关系:对于给定的复杂度,语言的组合性越强,其功能就越强大。”引自James Clark的“The Design of RELAX NG”,参见http://www.thaiopensource.com/relaxng/design.html#section:5。
扩展正则表达式(extended regular expression)
简称ERE,在基本正则表达式BRE的基础上添加了额外的功能,例如,选择操作(\|)以及量词(如?和+),egrep(extened grep)支持扩展正则表达式,因此都能进行以上操作。IEEE POSIX标准1003.2-1992对这些新特性进行了描述。grep使用-E选项(就和使用egrep一样)就表示使用扩展正则表达式而不是基本正则表达式。另见选择操作、 基本正则表达式、grep。
懒惰式匹配(lazy match)
在尝试寻找匹配时,懒惰式匹配一次只消耗目标字符串的一个字符。它不进行回溯。另见回溯、 贪心式匹配、 占有式匹配。
量词(quantifier)
设定在尝试匹配时正则表达式会出现的次数。一种形式是括号中包含一个整数或由逗号分隔的一对整数,如{3}表示表达式会出现3次(对于使用基本正则表达式的旧工具程序,必须将括号转义,就像\{3\})。
其他的量词有?(零次或一次)、+(一次或多次)、*(零次或多次)。量词也为限定符(bound)或修饰符(modifier)。量词自身是贪心式的。此外还有懒惰量词(如{3}?)和占有量词(如{3}+)。另见基本正则表达式、 贪心式匹配、 懒惰式匹配、 占有式匹配。
零宽度断言(zero-width assertion)
在匹配过程中不会消耗字符的边界。如^和$,分别匹配行起始和行结束。
锚位符 (anchor)
指定行或字符串中的位置。例如,脱字符(也叫音调符^)表示行或字符串的起始,而美元符($)则表示行或字符串的结束。
模式空间(pattern space)
sed程序通常逐行处理输入内容。在处理每一行时,该行的内容就被放入模式空间中,在该空间中就会应用模式。这也被称为工作缓冲区(work buffer)。见容纳空间、sed。
匹配(matching)
正则表达式会在文件中匹配指定的模式,然后根据应用程序要求触发结果。
前瞻(lookahead)
一种正则表达式,它仅在另一个指定的正则表达式尾随其后时才会匹配。正前瞻使用语法regex(?=regex)。反前瞻表示尾随该表达式的内容不是尾随其后的正则表达式时才匹配。使用语法regex(?!regex)。
取反操作(negation)
表示一个正则表达式不匹配给定的模式。
容纳缓冲区(hold buffer)
见容纳空间。
容纳空间(hold space)
sed用于存储一行或多行以便进行进一步处理的空间。也称为容纳缓冲区。参见模式空间、sed。
十六进制(hexadecimal)
由数字0-9和字母A-F或a-f表示的基数为16的计数系统。例如,十进制数15在十六进制中表示为F,而16在十六进制中表示为10。
贪心式匹配(greedy match)
贪心式匹配会尽可能多地消耗目标字符串中的字符,然后在字符串中回溯来尝试寻找匹配。见回溯、懒惰式匹配和占有式匹配。
限定符(bound)
见量词(quantifier)。
修饰符(modifier)
放在匹配或替换模式之后的字符,它会对匹配过程进行修改。例如,i修饰符会将匹配变为不区分大小写。修饰符也称为标记符。
选项(option)
允许你开启或关闭选项来修改匹配内容。例如,(?i)选项表示匹配是不分大小写的。这与修饰符功能相似,但是所用的语法不同。另见修饰符。
选择操作 (alternation)
用竖线符(|)将几个正则表达式分隔,表示“或”操作。也就是说,由一个或多个|分隔的任何一个正则表达式匹配即可。在某些应用程序中,就像使用基本正则表达式(BRE)的grep或sed,则需要在|之前加一个反斜线符号\|。另见基本正则表达式。
原子(atom )
参见元字符。
原子分组(atomic group)
一种分组模式,当(?>…)中的正则表达式无法匹配时,就关闭回溯操作。另见回溯、 分组。
元字符(metacharacter)
一种在正则表达式中有特殊含义的字符。这些字符是.、\、 \|、*、+、?、~、$、[、]、 (、 )、{、}。元字符也称为原子。
灾难性回溯(catastrophic backtracking)
参见回溯。
占有式匹配(possessive match)
在尝试寻找匹配时,占有式匹配一次直接消耗整个字符串。它不进行回溯。另见回溯、 贪心式匹配、 懒惰式匹配。
正前瞻(positive lookahead)
见前瞻。
正后顾(positive lookbehind)
见后顾。
正则表达式(regular expression)
一种经过特别编写的字符串,在应用或工具程序中使用时可以匹配其他的字符串或字符串集合。20世纪50年代,数学家Stephen Kleene(1909—1994)在1952年出版的Introduction to Metamathematics一书中,讲到有关形式语言理论的工作时首次描述了正则表达式。Ken Thompson等人有关QED编辑器(在运行于GE-635上的通用电气分时系统中)的工作,以及20世纪70年代早期AT&T贝尔实验室的Unix操作系统中其他工具程序的开发推动了正则表达式在计算机领域的发展。
转义字符(character escape)
前面带有反斜线的字符。例如,\t(水平制表符)、\v(垂直制表符)和\f(换页符)。
字符集(character set)
见字符组。
字符组(character class)
通常是指包括在方括号中的一组字符,例如[a-bA-B0-9]就是一个字符组,它表示ASCII或者基本拉丁(Low Basic Latin)字符集范围内的所有的大小写字符以及数字。
字符串字面值(string literal)
仅从文字字面上解释的字符串,如文字字符串“It is an ancient Marinere”,对比“[Ii]t[ ]is[ ].*nere.”这类字符串。
字面值(literal)
见字符串字面值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论