作者: 溪水清澈
需要转义的字符(共15个): () [] {} ^ $ . ? + * / |
数字键 ^ $ + * ( )
右小指上 [] {} |
右小指下 . ? /
符号都可以使用可行转义,不会出问题.
捕获:代表存储.
匹配:代表成功.
. |
单字符 |
|
? |
{0,1} |
|
|
懒惰模式 |
在保证匹配成功的前提下 尽可能少的匹配 |
*? |
重复任意次 |
但尽可能少重复 |
+? |
重复1次或更多次 |
但尽可能少重复 |
?? |
重复0次或1次 |
但尽可能少重复 |
{n,m}? |
重复n到m次 |
但尽可能少重复 |
{n,}? |
重复n次以上 |
但尽可能少重复 |
+ |
{1,} |
|
* |
{0,} |
|
| |
分枝支 |
左右两边平等,而不只是单个字符. |
- 零宽断言,正: 匹配成功,预测先行: 看后面的位置
零宽断言 |
匹配一个位置 |
注意:仅仅是匹配一个位置而已 |
(?=exp) |
零宽正预测先行断言 exp前面的位置 |
"cook(?=b)"只匹配下面的第二个cook "cookacookbcookc" (?=b)表示k和b之间的位置 |
(?<=exp) |
零宽正回顾后发断言 exp后面的位置 |
"(?<=b)cook"只匹配下面的第二个cook "acookbcookccook" (?<=b)表示b和c之间的位置 |
(?!exp) |
零宽负预测先行断言 非exp前面的位置 |
"cook(?!b)"匹配第一个和第三个cook "cookacookbcookc" |
(?<!exp) |
零宽负回顾后发断言 非exp后面的位置 |
"(?<!b)cook"匹配第一个和第三个cook "cookacookbcookc" |
(?#comment) |
注释.就当没有这段文字 |
"(?<=b)cook" = "(?<=b)cook(?#comment)" |
^ |
开始 |
断言:位置 |
$ |
结尾 |
断言:位置 |
b |
单词分割 |
B 断言:位置 |
[] |
自定义类,匹配单个字符 |
[^ ]始终会匹配换行符 |
{n,m} |
重复次数 |
|
|
转义符 |
|
d |
数字 |
D |
w |
字母,数字,下划线,汉字 |
W |
s |
空白符 |
S |
a |
报警字符 |
|
t |
Tab |
|
r |
Enter |
|
v |
竖向制表符 |
|
f |
换而符 |
|
n |
换行符 |
|
e |
Escape |
|
xnn |
十六进制 |
注意是两个字 |
| |