很久了,想看看正则表达式的具体规范,还好最近,有幸找到并收集了一下,如下
在最简单的形式中,正则表达式(regular expression)是用来在文件中定位文本的一些搜索标准。例如,要查找所有包含单词 “admin” 的行,我们就可以对 “admin” 进行搜索。因此,“admin” 就构成了一个正则表达式。如果我们不但希望查找 “admin”,而且还想将其替换成 “root”,那么我们就可以在一个工具中使用适当的命令将 “admin” 替换成 “root”。它们都构成了正则表达式。
正则表达式所采用的一些基本规则如下:
- 任何单个字符或一串字符都可以匹配字符本身,例如上面的 “admin” 的例子。
- ^ 符号(
^
)表示一行的开始;$ 符号($
)表示一行的结束。 - 要搜索特殊字符(例如 $ 符号),需要在这些字符前面加上反斜线(
\
)。例如,\$
就表示查找$
,而不是一行的末尾。 - 点(
.
)代表任何单个字符。例如,ad..n
代表 5 个字符项,前两个字符是 “ad”,最后一个字符是 “n”。中间两个字符可以是任何字符,但是只能是由两个字符组成。 - 任何时候如果正则表达式包含在斜线中(例如
/re/
),搜索就是通过文件顺序进行的。如果正则表达式包含在问号中(例如,?re?
),搜索就是通过文件逆序进行的。 - 方括号(
[]
)表示多个值,减号(-
)表示值的范围。例如,[0-9]
与[0123456789]
相同,[a-z]
就等效于搜索任何小写字符。如果一个列表的首字符是 ^ 符号,它就匹配不在这个清单中的任何字符。
例子 | 说明 |
---|---|
[abc] | 匹配 “a”、“b”、“c” 之一 |
[a-z] | 匹配从 “a” 到 “z” 的任何一个小写字符 |
[A-Z] | 匹配从 “A” 到 “Z” 的任何一个大写字符 |
[0-9] | 匹配从 0 到 9 的任何一个数字 |
[^0-9] | 匹配任何除了 0 到 9 数字范围内的任何字符 |
[-0-9] | 匹配从 0 到 9 的任何数字,或者是短横线(-) |
[0-9-] | 匹配从 0 到 9 的任何数字,或者是短横线(-) |
[^-0-9] | 匹配除从 0 到 9 的数字和短横线(-)之外的任何字符 |
[a-zA-Z0-9] | 匹配任何字符或数字 |