重要概念
元字符
代码 / 语法 | 说明 |
---|---|
. | 匹配除换行以外的任意字符 |
\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 次以上,但次数尽可能少 |
网友评论