4.15. 字符介绍——一连串的字符
4.15 字符介绍——一连串的字符
允许你指定一个字符重复次数的元字符(*+?)表示一连串不确定的长度。考虑下面的表达式:
11*0
它将匹配下面的每一行:
10
110
111110
1111111111111111111111111110
这些元字符让正则表达式更灵活。
现在让我们看一对能让你表示一个区间并且能决定这个区间的长度的元字符。这样,你能指定一个字面量字符或正则表达式出现的最小次数和最大次数。
在 grep 和 sed 中, \{ 和 \} 是可用的。
使用者一定要注意,非常老的版本可能没有它们。
POSIX egrep 和 POSIX awk 使用 { 和 } 。在任何情况下,大括号{}
包裹一到两个参数:
\{n,m\}
n 和 m 是 0 到 255 之间的整数。指定 {n} ,将精确匹配之前那个字符或正则表达式的 n 次出现。指定 {n,} ,将匹配至少 n 次出现,指定 {n, m} 时,任何在 m 和 n 次之间的出现都会被匹配。
注意 “?” 等价于 “\{0,1\}” , “*” 等价于 “\{0,\}”,“+” 等价于 “{1, \}” ,没有修饰符等价于 “\{1\}”
比如下面的表达式将匹配 "1001," "10001," and "100001",但不会匹配 "101" ot "1000001":
10\{2,4\}1
这个元字符对在匹配固定长度字段的数据和可能从数据库提取的数据时是有用的。它也可以用来匹配格式化的数据,比如电话号码、美国社会保险号、目录部分的 ID 等等。比如一个社会保险号的格式是三位数,横线,两位数,横线 ,4 位数,这个格式可以如下描述:
[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}
类似的,一个北美本地电话号码能用下面的正则表达式来描述:
[0-9]\{3\}-[0-9]\{4\}
如果你使用一个预发布 POSIX awk——在它里面没有大括号{}
存在——你可以简单适当的重复几次字符类。
推荐文章: