正则表达式简介
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。
正则表达式并不是某一门编程语言专用,它是一项独立于任何编程语言的一套文本搜索和匹配规则,目前是所有的程序设计语言都提供了对正则表达式标准规则的支持而已。
所以要学习好正则表达式,我们重点其实并不在于在某个程序设计语言中怎么调用,用什么函数,传递什么参数,而是首先要完全理解正则表达式的语法规则。
正则表达式语法
标准的正则表达式的语法规则归类如下:
1.方括号:
方括号用于查找某个范围内的字符,如表9-5所示。
表9- 5 正则表达式的方括号用法
表达式 | 描述 |
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项,red或blue或green。 |
2.元字符
元字符(Metacharacter)是拥有特殊含义的字符,如表9-6所示。
表9-6 正则表达式的元字符
元字符 | 描述 |
. | 查找单个字符,除了换行和行结束符。 |
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\0 | 查找 NUL 字符。 |
\n | 查找换行符。 |
\f | 查找换页符。 |
\r | 查找回车符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八进制数 xxx 规定的字符。 |
\xdd | 查找以十六进制数 dd 规定的字符。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
3.量词:
量词主要解决匹配数量的问题,如表9-7所示。
表9-7 正则表达式中的量词
量词 | 描述 |
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 或 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。
${comment['nickname']} ${comment['createtime']}
${comment.content}
${reply.nickname} 回复 ${comment.nickname}
${reply.createtime}
回复内容:${reply.content}
|