Regex
引言
正则表达式(Regular Expression)是使用单个字符串来描述、匹配一系列符合某个句法规则的一串字符。我在之前的学习工作中,遇到正则表达式,往往都是直接搜索相关问题的结果,或者尝试用其他方法解决。也尝试过学习相关的规则,但是过一段时间不用之后,往往会生疏乃至忘记。这篇文章尝试着理解并消化正则表达式相关的知识。
字符与位置
正则表达式是匹配模式,不是匹配字符,就是匹配位置
匹配字符
特殊字符
正则表达式除了匹配常规的 a-z,A-Z,0-9 等字符外,还存在着一些特殊字符,如下所示
字符 | 记忆方法 |
---|---|
\t | tab |
\v | vertical tab |
\f | form feed |
\r | return |
\n | new line |
字符组
虽然叫字符组,但是只匹配字符组中的某个字符,比如[abc]
只匹配 a,b,c 中的一个。对应的如果不想匹配某几个字符,则需要在字符组最前面加上**脱字符(^),形如[^abc],则表示匹配除 a,b,c 之外的其他字符。使用连字符(-)**则可以匹配连续的一段字符,形如 a-z,0-9。另外有如下相关的简写形式来表示对应的字符区间。
正则表达式 | 匹配区间 | 记忆方法 |
---|---|---|
\d | [0-9] | digit |
\D | [^0-9] | opposite to \d |
\w | [0-9a-zA-Z_] | word**(注意有下划线_)** |
\W | [^0-9a-za-z_] | opposite to \w |
\s | [\t\v\n\r\f] | space character |
\S | [^\t\v\n\r\f] | opposite to \s |
. | [^\n\r\u2028\u2029] | 匹配除换行符之外的所有字符 |