什么是正则表达式? 正则表达式只是一个字符模板,用来在搜索中匹配相同的字符,在大多数程序中,正则表达式是括在正斜杠中间的。例如,/love/就是一个以正斜杠为分隔符的正则表达式,其中的模板love将用在搜索所有行中与它匹配的字符。
表 2.1 正规表达式的元字符集
元字符 功能 例子 匹配什么
^ 锚定行的开始 /^love/ 匹配所有以 love 开头的行
$ 锚定行的结束 /love$/ 匹配所有以 love 结束的行
. 匹配一个字符 /l..e/ 匹配所有这样的行,这些行包含这样的字符:第一个字符
是 l,紧跟着两个字符,然后是 e
* 代表 0 个或者多个先前字 /*love/ 匹配所有这样的行,有 0 个或者多个空格,空格后跟着love
[] 匹配字符组中的一个字符 /[Ll]ove/ 匹配所有包含 love 或者 Love 的行
[x-y] 匹配以字符范围组成的组 /[A-Z]ove/ 匹配所有这样的行,这些行包含如下的字符,第一个字符是从
A 到 Z 中间的一个,后面跟着love 着 ove
[^] 匹配一个不在范围内的字 /[^A-Z]ove/ 匹配所有这样的行,这些行包含如下的字符,第一个字符不是
从 A 到 Z 中间的一个,后面跟着 ove
\ 用来转义一个元字符 /love\./ 匹配所有这样的行,这些行包含如下的字符:love 后面跟着
一个点。通常点是表示任何字 符的通配符
许多使用 RE 元字符集的 UNIX 程序都支持附加元字符集。
\< 锚定单词的开始 /\<love/ 匹配所有这样的行,这些行包含以 love 开头的单词(vi
和 grep 支持这个功能)
\> 锚定单词的结束 /love\>/ 匹配所有这样的行,这些行包含以 love 结束的单词(vi
和 grep 支持这个功能)
\(..\) 标记后面用到的匹配 /\(love\)able/\1rs/ 最多可以使用 9 个标签。第一个标签是模板最左边的部
分。在本例子中,模板 love 保存为标签 1,后面的\1 指
的就是 Love;本例子搜索的是这样的行,这些行包含这样
的字符,在 Loveable 后面跟着 lovers
x\{m\} 重复字符x,m次 0\{5\} 匹配包含5个0的行
x\{m,\} 重复字符x,至少m次 0\{5,\} 匹配至少包含5个0的行
x\{m,n\} 重复字符x,至少m次,不多于n次;