我正在参与掘金创作者训练营第4期,点击了解活动详情,一起学习吧!
正则表达式,永远记不住
以前需要用正则表达式的时候,常用的正则表达式直接搜一下,基本上都能查到,然后复制粘贴一下,就混过去了,偶尔的几次尝试自己写,但是发现根本写不出来,一看就会,一写就废。
但是,自从我看了《正则表达式30分钟入门教程》以后,忘记怎么写的或者读不懂表达式的意思,就会重新查阅,这样就可以加深印象了。
下面,我们就来回顾一下:
元字符
元字符(Metacharacter),指SHELL直译器或正则表达式(regex)引擎等计算机程序中具有特殊意义的字符。 ————引自元字符
简单理解就是正则表达式中具有特殊意义的字符。比如:
| 代码 | 说明 |
|---|---|
| . | 匹配除换行以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| \b | 匹配单词的开始或结束 |
| 匹配字符串的开始 | |
| $ | 匹配字符串的结束 |
下面,举个例子吧:
\ba\w*\b
我们知道 \b匹配的是是位置,它匹配单词的开始或者结束,所以中间是要匹配一个单词,这个单词以 a字母开头,\w 匹配字符、数字、下划线或汉字,其中 * 代表任意数量。为了更容易理解,我们使用正则可视化来看一下:
字符转义
因为元字符在正则中有了特殊的含义,如果想要查找元字符本身的话,就需要用到 \ 进行转义,即在元字符或者特殊字符前面加 \。
例如: \.
如果遇到了 \ 本尊,也要使用转义: \\
分支条件
分支条件用于匹配多种规则,如果满足其中任意一种都应当匹配,使用 | 将不同的规则分开即可。
例如: 0|1,匹配 0 或者 1
分组
比如一个简单的IP地址匹配表达式: /(\d{1,3}\.){3}\d{1,3}/
反义
我们之前提到元字符,反义大部分是将字符大小,表示与小写字符相反的意思,可以对照着记。
| 代码 | 说明 |
|---|---|
| \W | 匹配任意不是字母或数字或下划线或汉字 |
| \S | 匹配任意不是的空白符 |
| \D | 匹配非数字 |
| \B | 匹配不是单词的开始或结束 |
| [^x] | 匹配除了x以外的任意字符 |
后向引用
如果已经匹配到的结果,还想再做进一步处理,这时候就可以用后向引用。使用小括号指定的表达式,会自动获得一个组号,从左向右,从 1 开始往后数。
例如: \b(\w+)\b\s+\1\b
总结
正则表达式需要忘记了之后就立马查,多看几遍就一定能记住,并且能活学活用。