速测

速查

锚点
^匹配字符串或行的开头^\w+an answer or a question
$匹配字符串或行的开头\w+$an answer or a question
\b匹配单词的开头或末尾n\ban answer or a question
\B匹配不在单词的开头或末尾的位置n\Ban answer or a question
字符类
[abc]匹配集合中的任意字符b[eo]rbar ber bir bor bur
[^abc]匹配不在集合中的任意字符b[^eo]rbar ber bir bor bur
[a-z]匹配两个字符之间的任意字符[e-i]abcd e f g h i jklmnopqrstuvwxyz
.匹配除换行符之外的任意字符.h i 0 1 2 _ - ! ?
\w匹配字母、数字或下划线\wh i 0 1 2 _ -!?
\W匹配除字母、数字和下划线之外的任意字符\Whi012_ - ! ?
\d匹配所有数字\d+1-(4 4 4)-2 2 2
\D匹配除数字外的任意字符\D+1- (444) -222
\s匹配任意空白字符\sone two
\S匹配除空白字符以外的任意字符\So n e t w o
量词与分支
+匹配 1 次或多次be+pbp bep beep beeep
*匹配 0 次或多次be*pbp bep beep beeep
?匹配 0 次或 1 次colou?rcolor, colour
{n}匹配刚好 n 次be{1}pbp bep beep beeep
{n,}匹配至少 n 次be{1,}pbp bep beep beeep
{n,m}匹配 n 到 m 次be{1,2}pbp bep beep beeep
a|b匹配 a 或 b(c|r)atfat, cat, rat
组和引用
(abc)将 abc 作为一个整体(组)进行匹配(ha)+hahaha hah haha
\1引用第一个组(第一个括号中的内容)(\w)a\1hah haa dad
(?:abc)创建无法引用的分组,abc 无法被 \1 引用(?:ha)+hahaha hah haha
零宽断言
(?=abc)正向先行断言,匹配后面紧跟 abc 的位置\d(?=nd)1st 2nd 3pc
(?!abc)负向先行断言,匹配后面不紧跟 abc 的位置\d(?!nd)1st 2nd 3pc
(?<=abc)正向后行断言,匹配前面紧跟 abc 的位置(?<=%)\d#1 $2 %3
(?<!abc)负向后行断言,匹配前面不紧跟 abc 的位置(?<!%)\d#1 $2 %3

零宽断言

零宽:括号内的字符只用于匹配位置,不占用字符,所以被称为"零宽",类似 ^$ 锚定开头和末尾

先行:类似 abc$,匹配在前,锚点在后

后行:类似 ^abc,锚点在前,匹配在后

正向:匹配括号中的表达式

负向:不匹配括号中的表达式

标志

flag 不写在正则表达式里,位于表达式之外,格式:/pattern/flags

i:不区分大小写(ignore)

g:全局匹配(global)

m:多行匹配(multi line)

常用正则表达式

ipv4 地址(\d{1,3}\.){3}(\d{1,3})64 bytes from 110.242.68.66: icmp_seq=2 ttl=48 time=41.6 ms

参考资料

RegexLearn