重要概念
元字符
| 代码 / 语法 | 说明 |
|---|---|
| . | 匹配除换行以外的任意字符 |
| \w | 字母、数字、下划线 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
字符转义
想查找元字符本身的话,在元字符前加上 \ ,比如 \\ 匹配 \。
重复
| 代码 / 语法 | 说明 |
|---|---|
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 零次或一次 |
| {n} | 重复 n 次 |
| {n,} | 至少重复 n 次 |
| {n,m} | 重复 n 到 m 次 |
字符类
如果想匹配元字符不能完全匹配的字符,用方括号列出。如:
[a-zA-Z] 匹配 大小写字母。
分支条件
用 | 将分支条件分隔开。如:
(?0\d{2}\)?[- ]?\d{8}|0\d{2}[- ]?\d{8} 匹配形如 010-88888888 或 (010) 88888888 的电话号码。
分组
可以用小括号来指定子表达式(分组)。如:
(\d{1,3}.){3}\d{1,3} 匹配形如 127.0.0.1 的 IP 地址。
反义
| 代码 / 语法 | 说明 |
|---|---|
| \W | 匹配除数字、字母或下划线以外的任意字符 |
| \S | 匹配任意的非空白符 |
| \D | 匹配非数字 |
| \B | 匹配非单词的开始或结束 |
| [^x] | 除 x 以外的字符 |
| ^aeiou | 除 aeiou 以外的字符 |
后向引用
注释
小括号的另一种用途是通过语法(?#comment)来包含注释。
贪婪与懒惰
| 代码 / 语法 | 说明 |
|---|---|
| *? | 重复任意次,但次数尽可能少 |
| +? | 重复 1 次或更多次,但次数尽可能少 |
| ?? | 重复 0 次或 1 次,但次数尽可能少 |
| {n,m}? | 重复 n ~ m次,但次数尽可能少 |
| {n}? | 重复 n 次以上,但次数尽可能少 |

京公网安备 11010502036488号