元字符(.)可以作为通配符匹配任意单个字符。
元字符(*)用于与他前面的正则表达式的零个或多个出现匹配。星号元字符本身不匹配任何字符,它用于修改它前面的内容。正则表达式 .*匹配任意数目的字符。
元字符汇总
|
特殊字符 |
用途 |
|
. |
匹配除换行符以外的任意单个字符。在awk中,句点也能匹配换行符。 |
|
* |
匹配任意一个(包括零个)在它前面的字符(包括由正则表达式指定的字符) |
|
[…] |
匹配方括号中的字符类中的任意一个。如果方括号中第一个字符为脱字符号(^),则表示否定匹配,即匹配除了换行符和类中列出的那些字符范围的所有字符。在awk中,也匹配换行符。连字符(-)用于表示字符的范围。如果类中的第一个字符为右方括号( ] )则表示她是类成员。所有其它的原字符在被指定为类中的成员时都会失去它本身的含义。 |
|
^ |
如果作为正则表达式的第一个字符,则表示匹配行的开始。在awk中匹配字符串的开始,即使字符串包含嵌入的换行符。 |
|
$ |
如果作为正则表达式的最后一个字符,则表示匹配行的结尾。在awk中匹配字符串的结尾,即使字符串包含嵌入的换行符。 |
|
\{m,n\} |
匹配它前面某个范围内单个字符出现的次数(包括由正则表达式指定的字符)。\{n\}将匹配n次出现,\{n,\}至少匹配n次出现,而且\{m,n\}匹配n和m之间任意次出现。 |
|
\ |
转义随后的特殊字符 |
扩展的元字符(egrep和awk)
|
特殊字符 |
用途 |
|
+ |
匹配前面的正则表达式的一次或多次出现 |
|
? |
匹配前面的正则表达式的零次或一次出现 |
|
| |
指定可以匹配其前面的或后面的正则表达式(替代方案) |
|
() |
对正则表达式分组 |
|
{n,m} |
匹配它前面末各范围内单个字符出现的次数(包括由正则表达式指定的字符)。{n}表示将匹配n次出现,{n,}至少匹配n次出现,{n,m}匹配n和m之间的任意次出现。 |
|
|
|
普遍存在的反斜杠
元字符反斜杠(\)将元字符转化成为普通字符(和将普通字符转化为元字符)。它强制将任意元字符解释为普通文字,以便匹配该字符本身。也可以使用反斜杠将一组普通字符解释为元字符。如:“ \n”结构中n表示从1到9之间的一个数字。
字符类
使用方括号元字符将字符列表括起来,其中每一个字符占据一个位置。文档可以
与在方括号内的任一字符匹配。字符类在处理大小写字母时非常有用。例如:[Ww]hat,指定what的大小写。下表列出方括号中具有特殊含义的字符。
|
字符 |
功能 |
|
\ |
转义任意特殊字符(只用于awk中) |
|
- |
当它不再第一个或最后一个位置时,表示一个范围 |
|
^ |
仅当在第一个位置时表示反转配置 |
POSIX字符类补充
POSIX标准对正则表达式字符和操作符的含义进行了形式化。这种标准定义了两类正则表达式:基本正则表达式(BER),grep和sed使用这种正则表达式;扩展的正则表达式,egrep和awk使用这种正则表达式。
POSIX标准提供了附加的字母序列,当匹配和调整(排序)字符串数据时,这些字符序列应该被作为单个单元看待。
POSIX还改变了常用的术语。一直成为“字符类”的东西在POSIX标准中称为“括号表达式”。在括号表达式中,除了字面字符(例如,a、!等)以外,还可以有其它标记。如下:
Ø 字符类:
由 [: 和 :]包围的关键字组成的POSIX字符类。关键字描述了不同的字符类,例如,文字字符,控制字符等等
Ø 整理符号:
整理符号是多字符的序列,表示这些字符应该被看作是一个单元。它由[.和.]包围的字符组成
Ø 等价类:
等价类列出了应该看作是等价的字符集,它由地区化的字符元素(由[=和=]包围)组成
所有的这3种结构都必须出现在括号表达式的方括号中。例如 [[:alpha:]!]匹配任意单个字母字符或感叹号,[[.ch.]]匹配整理元素ch,但不匹配字母c或字母h。在法语地区[[=e=]可以匹配任意e、è或é 。
|
类 |
匹配字符 |
|
[:alnum:] |
可打印的字符(包括空白字符) |
|
[:alpha:] |
字母字符 |
|
[:blank:] |
空格和制表符 |
|
[:cntrl:] |
控制字符 |
|
[:digit:] |
数字字符 |
|
[:graph:] |
可打印的和可见的(非空格)字符 |
|
[:lower:] |
小写字符 |
|
[:print:] |
可打印的字符(包括空白字符) |
|
[:punct:] |
标点符号字符 |
|
[:space:] |
空白字符 |
|
[:upper:] |
大写字符 |
|
[:xdigit:] |
十六进制数字 |
重复出现的字符
星号(*)元字符表示它前面的正则表达式可以出现零次或多次。也就是说,如果它修饰的单个字符,那么该字符可以在那里也可以不在那里,并且如果他在那里,那可能会不止出现一次。
当星号元字符前面有句点元字符时(贪婪模式),表示匹配任意数目的字符。可以用于标识两个固定的字符串之间的字符的跨度。可以匹配任意字符串。
星号用于修饰字符类时,则可以匹配类中的任意数目的字符。