- 论坛徽章:
- 0
|
正则表达式 REGULAR EXPRESSIONS
一个正则表达式是一个描述了一个字符串集合的模式。正则表达式的构造类似于算术表达式,使用各种各样的操作符来将更小的表达式连在一起。
Grep 能理解两种不同版本的正则表达式语法:"basic" 和 "extended"。在 GNU grep 中,两种语法可以实现的功能是没有区别的。在其他实现中,基本 (basic) 正则表达式表达能力要弱一点。下面的描述适用于扩展的 (extended) 正则表达式,它与基本正则表达式的区别会在最后做一个总结。
基本的构造块是匹配单个字符的正则表达式。大部分字符,包括所有字母和数字,是匹配它们自身的正则表达式。任何具有特殊含义的元字符可以通过前置一个反斜杠来引用。(may be quoted by preceding it with a backslash.)
方括号表达式 (bracket) 是一个字符序列,放在 [ 和 ] 当中。它匹配序列中的任何一个字符;如果序列中的第一个字符是脱字符 (caret) ^ 那么它匹配 不在序列中的任何一个字符。例如,正则表达式 [0123456789] 匹配任何一个数字。
在方括号表达式之中,一个 范围表达式 (range) 由两个字符组成,中间用一个连字符 (hyphen) 分隔。它匹配在这两个字符之间的任何一个字符,使用本地化的序列顺序和字符集。(that sorts between the two characters,inclusive, using the locale's collating sequence and character set.) 例如,在默认的 C locale中 , [a-d] 与 [abcd] 等价。典型的,许多 locale 将字符以字典顺序排序,在这些 locale 中, [a-d] 不与 [abcd] 等价;例如它可能与 [aBbCcDd] 等价。要获 得传统的对方括号表达式的解释,可以设定环境变量 LC_ALL 值为 C 来使用 locale C 。
最后,在方括号表达式中有一些预定义的字符类,如下所示。它们的名字是自说明的,它们是 [:alnum:](字母和数字), [:alpha:](字母), [:cntrl:](), [:digit:]( 数 字), [:graph:](), [:lower:]( 小 写 字 母), [:print:]( 可打印字符), [:punct:](), [:space:](空格), [:upper:](大写字母), 和 [ digit:] 。例如, [[:alnum:]] 意思是 [0-9A-Za-z] ,但是后一种表示方法依赖于 locale C 和ASCII 字符编码,而前一种是与 locale 和字符集无关的。(注意这些字符类名中的方括 号也是符号名称的一部分,必须包含在用来为序列定界的方括号之中。) |
评分
-
查看全部评分
|