字符简写式
字符简写式 | 描述 | 字符简写式 | 描述 |
---|---|---|---|
\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下的正则工具。