s :空白符;
S :非空白符;
[sS] :任意字符;
[sS]* :0个到多个任意字符;
[sS]*? : 0个字符,匹配任何字符前的位置;
d:数字;
B:非数字 ;
w:匹配单词 单词等价于:[a-zA-Z0-9_];
W:匹配非单词;
规则:
. 匹配任意单个字符;
* 匹配前一个字符0次或多次;
+ 匹配前一个字符1次或多次;
? 匹配前一个字符0次或一次;
{m} 匹配前一个字符m次;
{m,n} 匹配前一个字符 m - n 次;
{m,} 匹配前一外字符至少 m次 至多无限次;
{,n} 匹配前一个字符 0 到 n次;
转义字符;
[...] 字符集 例:[a-z];
.*? *? +? ?? {}? 使* + 等 变成非贪婪模式
边界匹配(不消耗待匹配的待匹配字符串的字符)
^:匹配字符串开头,在多行模式中匹配每一行的行首;
$:匹配字符串结尾,在多行模式中匹配每一行的行尾;
:匹配单词边界,不匹配任何字符,匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非字符、字符串的开始或结束位置,是零宽度的。(“单词”是由w所定义的单词子串) 相当于:(?<!w)(?=w)|(?<=w)(?!w);
B:[^];
A:仅匹配字符串开头;
:仅匹配字符串结尾;
分组:
| 或,左右表达式任意匹配一个,它先尝试匹配 | 左边的表达式,如果匹配成功则跳过匹配右边的表达式;如果 | 没有被包括在()中,则它在范围是整个正则表达式。
() 分组 ;从表达式左边开始,第遇到一个分组,编号加1;分组表达式作为一个整体,后面可接数量词;分组表达式中的 | 仅在该分组中有效。 例:(abc){3} (abc|def)123 (abc|def){3}123
umber 引用编号为 number 的分组匹配到的字符串。 例:(d)([a-z])12
环视(lookhead)
(?=) :顺序肯定环视
(?!) :顺序否定环视
(?<=) :逆序 肯定环视
(?<!) :逆序否定环视