
字符简写式
| 字符简写式 | 描述 | 字符简写式 | 描述 |
|---|---|---|---|
| \d | 报警符 | \w | 单词字符 |
| [\b] | 退格字符 | \W | 非单词字符 |
| \c x | 控制字符 | \0 | 空字符 |
| \d | 数字字符 | \x xx | 字符的十六进制 |
| \D | 非数字字符 | \u xxx | 字符的Unicode值 |
| \o xxx | 字符的八进制 |
匹配各种空白符
| 字符简写式 | 描述 | 字符简写式 | 描述 |
|---|---|---|---|
| \f | 换页符 | \s | 空白符 |
| \h | 水平空白符 | \S | 非空白符 |
| \H | 非水平空白符 | \t | 水平制表符 |
| \n | 换行符 | \v | 垂直制表符 |
| \r | 回车符 | \V | 非垂直制表符 |
在sed中使用正则
- 替换
|
|
- 插入
|
|
在Perl中使用正则:
- 替换
|
|
- 插入
|
|
匹配元字符的字面值
元字符:.^$*+?|(){}[]\-
用\Q$\E 或 \$匹配
正则表达式中的选项
| 选项 | 描述 | 选项 | 描述 |
|---|---|---|---|
| (?d) | Unix中的行 | (?i) | 不区分大小写 |
| (?J) | 允许重复的名字 | (?m) | 多行 |
| (?s) | 单行(dotall) | (?u) | Unicode |
| (?U) | 默认最短匹配 | (?x) | 忽略空格和注释 |
| (?-…) | 复原或关闭选项 |
Perl语言中的修饰符
| 修饰符 | 描述 |
|---|---|
| a | 匹配\d、\s、\w以及处于ASCII范围内的POSIX字符 |
| c | 匹配失败后停留在当前位置 |
| d | 使用默认的本地平台规则 |
| g | 全局匹配 |
| i | 不区分大小写 |
| 1 | 使用当前位置的规则 |
| m | 多行匹配 |
| p | 保留匹配的字符串 |
| s | 将字符串看做一行内容 |
| u | 匹配时使用Unicode规则 |
| x | 忽略空格及注释 |
POSIX字符组
| 字符组 | 描述 |
|---|---|
| [[:alnum:]] | 匹配字母及数字 |
| [[:alpha:]] | 匹配大小写字母 |
| [[:ascii:]] | 匹配ASCII字符 |
| [[:space:]] | 匹配空格和制表符 |
| [[:blank:]] | 匹配空格字符 |
| [[:ctrl:]] | 匹配控制字符 |
| [[:digit:]] | 匹配数字 |
| [[:graph:]] | 匹配图形字符 |
| [[:lower:]] | 匹配小写字母 |
| [[:print:]] | 匹配可打印字符 |
| [[:punct:]] | 匹配标点符号 |
| [[:upper:]] | 匹配大写字母 |
| [[:word:]] | 匹配单词字符 |
| [[:xdigit:]] | 匹配十六进制数字 |
| [[:^alpha:]] | 匹配非字母字符 |
Unicode
中文:[\u4e00-\u9fa5]
量词
| 语法 | 描述 | 语法 | 描述 |
|---|---|---|---|
| ? | 零个或一个(可选) | ?? | 懒惰匹配零次或一次(可选) |
| + | 一个或多个 | +? | 懒惰匹配一次或多次 |
| * | 零个或多个 | *? | 懒惰匹配零次或多次 |
| {n} | 精确匹配n次 | {n}?懒惰匹配n次 | |
| {n,} | 匹配n次或更多次 | {n,} | 懒惰匹配n次或多次 |
| {m,n} | 匹配m至n次 | {m,n} | 懒惰匹配m至n次 |
| {0,1} | 与?相同 | ||
| {1,} | 与+相同 | ||
| {0,} | 与*相同 |
| 语法 | 描述 |
|---|---|
| (?=exp) | 正前瞻,匹配exp前的位置 |
| (?!exp) | 反前瞻,匹配后面不是exp的位置 |
| (?<=exp) | 正后顾,匹配exp后面的位置 |
| (?<!exp) | 反后顾,匹配前面不是exp的位置 |
Examples
国内电话号码:^(\(\d{3}\))\d{8}|(\(\d{4}\))\d{7,8}|\d{3}-\d{8}|\d{4}-\d{7,8}$
(010)12345678、(0755)1234567、010-12345678、0755-1234567
电子邮箱:[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
强烈推荐: 《正则表达式30分钟入门教程》
至于图灵的《学习正则表达式》,个人不建议买,里面的内容“30分钟”都有,如果想进一步学习正则表达式,推荐直接看《精通正则表达式(第3版)》或《正则表达式经典实例》。
另外推荐几款正则工具:
- RegExr,可通过浏览器使用,或者下载Windows或Mac版。
- Reggy,可选择不同的语言环境(PS:不同的语言环境下对正则的支持还是有细微的差别的)
- RegexKitTool,笔者为了测试Cocoa下对正则的支持开发的一款Mac下的正则工具。