看一次忘一次的正则表达式入门

160 阅读3分钟

我正在参与掘金创作者训练营第4期,点击了解活动详情,一起学习吧!

正则表达式,永远记不住

以前需要用正则表达式的时候,常用的正则表达式直接搜一下,基本上都能查到,然后复制粘贴一下,就混过去了,偶尔的几次尝试自己写,但是发现根本写不出来,一看就会,一写就废。

但是,自从我看了《正则表达式30分钟入门教程》以后,忘记怎么写的或者读不懂表达式的意思,就会重新查阅,这样就可以加深印象了。

下面,我们就来回顾一下:

元字符

元字符(Metacharacter),指SHELL直译器正则表达式(regex)引擎等计算机程序中具有特殊意义的字符。 ————引自元字符

简单理解就是正则表达式中具有特殊意义的字符。比如:

代码说明
.匹配除换行以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
匹配字符串的开始
$匹配字符串的结束

下面,举个例子吧:

\ba\w*\b

我们知道 \b匹配的是是位置,它匹配单词的开始或者结束,所以中间是要匹配一个单词,这个单词以 a字母开头,\w 匹配字符、数字、下划线或汉字,其中 * 代表任意数量。为了更容易理解,我们使用正则可视化来看一下:

image.png

字符转义

因为元字符在正则中有了特殊的含义,如果想要查找元字符本身的话,就需要用到 \ 进行转义,即在元字符或者特殊字符前面加 \

例如: \.

image.png

如果遇到了 \ 本尊,也要使用转义: \\

image.png

分支条件

分支条件用于匹配多种规则,如果满足其中任意一种都应当匹配,使用 | 将不同的规则分开即可。

例如: 0|1,匹配 0 或者 1

image.png

分组

比如一个简单的IP地址匹配表达式: /(\d{1,3}\.){3}\d{1,3}/

image.png

反义

我们之前提到元字符,反义大部分是将字符大小,表示与小写字符相反的意思,可以对照着记。

代码说明
\W匹配任意不是字母或数字或下划线或汉字
\S匹配任意不是的空白符
\D匹配非数字
\B匹配不是单词的开始或结束
[^x]匹配除了x以外的任意字符

后向引用

如果已经匹配到的结果,还想再做进一步处理,这时候就可以用后向引用。使用小括号指定的表达式,会自动获得一个组号,从左向右,从 1 开始往后数。

例如: \b(\w+)\b\s+\1\b

image.png

总结

正则表达式需要忘记了之后就立马查,多看几遍就一定能记住,并且能活学活用。