* 任意次 ? 0或1次 + 1或更多 {n} 重复n次 {n,} n或更多 {n,m} n到m次
| 分支条件
^$ 字符串开头结尾 (\n字符串\n) ^.*$
. 任意一个数字字母下划线 \s 空格回车 \d 数字 \b 该位置是空格 但不会显示空格,除非\b.\b
\d+ 一串数字 \S \D \B
[] 枚举 [^] 反向枚举 [m-n] 从m到n
() 分组 (?exp) 分组命名 (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
\1 引用第一个分组 \k 引用名字为groupname的分组
a.b 贪婪 a.?b 懒惰 *? +? ?? {n,m}? {n,}?
语法 IgnoreCase Multiline Singleline IgnorePatternWhitespace ExplicitCapture
零宽断言 ?=exp 零宽度正预测先行断言,自身出现的位置的后面能匹配表达式 ?<=exp 零宽度正回顾后断言,自身出现的位置的前面能匹配表达式 ?! 负向零宽断言 ?<!
(?‘group’) 把捕获的内容命名为group,并压入堆栈(Stack) (?’-group’) (?(group)yes|no) (?!)
另外正则这东西学了不复习很快就忘了,我发现有一个很好的网站可以用来复习 https://deerchao.cn/tutorials/regex/regex.htm#mission