# 学习网站推荐
regexone.com 一个交互式的入门网站 (opens new window) learn-regex (opens new window)
# 基础
元字符 | 描述 |
---|---|
. | match-any-charcater |
[ ] | 匹配方括号内的任意一个字符 |
[^ ] | 匹配除了方括号里的任意一个字符 |
* | 匹配>=0个重复的在*号之前的字符 |
+ | 匹配>=1个重复的+号前的字符 |
? | 标记?之前的字符为可有可无的 |
{n,m} | 匹配num个大括号之前的字符或字符集 (n <= num <= m) |
(xyz) | 子模式,匹配与 xyz 完全相等的字符串 |
| | 或运算符,匹配符号前或后的字符 |
\ | 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ | |
^ | match-beginning-of-line |
$ | match-end-of-line |
简写 | 描述 |
---|---|
. | 除换行符外的所有字符 |
\w | 匹配所有字母数字,等同于 [a-zA-Z0-9_] |
\W | 匹配所有非字母数字,即符号,等同于: [^\w] |
\d | 匹配数字: [0-9] |
\D | 匹配非数字: [^\d] |
\s | 匹配所有空格字符,等同于: [\t\n\f\r\p{Z}] |
\S | 匹配所有非空格字符: [^\s] |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符 |
# 标志
使用标志:/RegEx/flags
标志 | 描述 |
---|---|
i | 忽略大小写 |
g | 全局搜索(不仅仅返回第一个匹配的,而是返回全部) |
m | 多行修饰符:锚点元字符 ^ $ 工作范围在每行的起始 |
(^,$) 用于检查格式是否是在待检测字符串的开头或结尾。但我们如果想要它在每行的开头和结尾生效,我们需要用到多行修饰符 m。
# 前后预查
用于判断所匹配的格式是否在另一个确定的格式(通常会用小括号包裹)之前或之后,匹配结果不包含该确定格式(仅作为约束)。
符号 | 描述 | 示例 |
---|---|---|
?= | 正先行断言-存在(后面一定有) | "(T |
?! | 负先行断言-排除(后面一定没有) | "(T |
?<= | 正后发断言-存在(前面一定有) | "(?<=(T |
?<! | 负后发断言-排除(前面一定没有) | "(?<!(T |
# 贪婪匹配和惰性匹配
正则表达式默认采用贪婪匹配模式(主要针对量词*,+,{l,},{,h},{l,h}),在该模式下意味着会匹配尽可能长的子串。我们可以使用 ?(紧跟在量词后面) 将贪婪匹配模式转化为惰性匹配模式。
"/(.*at)/" => The fat cat sat on the mat.
"/(.*?at)/" => The fat cat sat on the mat.
← git Linux - Ubantu →