正则表达式-字符类

来源:互联网 发布:2017年淘宝新规则 编辑:程序博客网 时间:2024/05/16 04:54

字符类是对通配符概念的改进。我们可以列出要匹配的字符,而不是匹配特殊位置的任意字符。使用方括号元字符( [] )将字符列表括起来,其中每个字符占据一个位置。

字符类在处理大写和小写字母时非常有用。例如,如果"what" 可能以首字母大写或小写的形式出现,则可以指定:

[Ww]hat

这个正则表达式可以匹配"what" 或"What" 。它匹配包含这4个字符的字符串的任意行,第一个字符是"W" 或"w" 。因此,它可以匹配"Whatever" 或"somewhat" 。

如果一个文件中包含结构化的标题宏,例如: .H1, .H2, .H3,等等,那么可以用下面的正则表达式提取这些行中的任意一行:

\.H[12345]

这一模式匹配包含3个字符的字符串,最后一个字符是从1到5的任意数字。UNIX shell使用相同的语法,因此,可以使用字符类在UNIX命令中制定文件名。例如,为了从一组由章组成的文件中提取标题可能要输入:

$ grep '\.H[123]' ch0[12]
ch01:.H1 "Contents of Distribution Tape"
ch01:.H1 "Installing the Software"
ch01:.H1 "Configuring the System"
ch01:.H2 "Specifying Input Devices"
ch01:.H3 "Using the Touch Screen"
ch01:.H3 "Using the Mouse"
ch01:.H2 "Specifying Printers"
ch02:.H1 "Getting Started"
ch02:.H2 "A Quick Tour"
.
.

注意必须用引号引住其中的模式,以便把它传递给grep而不只是由shell解释。由grep产生的输出为每个要打印的行都标识了文件名。作为字符类的另一个实例,假设想要指定不同的标点符合来结束句子:

.[!?;:,".]  .

这个表达式匹配"任意后面有一个感叹号、问号、分号、冒号、逗号、引号或句点,随后是两个空格和任意一个字符"。它可以用于寻找在一个句子的结束和另一个句子的开头之间有两个空格的地方(当一行中有这种情况时)。注意:在这个表达式中有3个点,第一个和最后一个点是通配符元字符,但是第二个点解释为字面意义。在方括号中、标准的元字符会失去它们的含义。因此,方括号中的点表示一个句点。下表列出了方括号中具有特殊含义的字符。

参考资料:http://www.linuxawk.com/communication/415.html

0 0
原创粉丝点击