【简单易懂】正则表达式的基础用法整理

前言

正则表达式有些很难记住的理论,在这里一次性整理一下,帮助更深刻一点的掌控。

正则表达式是什么

正则表达式可以把它看做是一种通配符的增强版,它可以帮你匹配你想要的字符串。

在很多地方可以用到正则表达式,比如编译器中的词法分析器、网址上的注册表单、爬虫中用正则表达式来提取信息等等。所以我们可以更加深刻地理解正则表达式的用处之广,好多地方都不能缺少它。

以下是正则表达式正式内容,一些最基础的用法。

限定符

限定符是一类特殊的字符,以下归纳:

符号含义例子
?表示之前的字符出现零次或者一次end? --> 表示en或者end
*表示之前的字符出现零次或者多次end* --> 表示en或者enddddd 都行
+表示之前的字符出现一次或者多次end+ --> 表示end或者endddddd
{…}之中可以精确表示字符出现的次数en{2}d --> 表示ennd en{2,3}d --> 表示ennd或者ennnd

如果想要限定多个运算符,比如ab,就直接打上括号再添加符号就行了,比如(ab)? 就表示 ab 或者空字符串。

"或"运算符

符号含义例子
|两者之间的取或a (cat|dog) --> a cat 或者 a dog

字符类

符号含义例子
[…]匹配 […] 中的所有字符[abc] 会匹配所有字符串中的a,b,c 的字符
[^…]表示匹配除了[…]中字符以外的所有字符串[^abc]会匹配所有字符串中除了a,b,c 的字符

注:[a-z]表示所有的小写字符,[A-Z]表示所有大写字符,[a-zA-Z0-9]表示所有的英文字符和数字

[^0-9]表示所有的非数字字符(包括换行符)

元字符

元字符是一组正则表达式中预先定义好的一系列常用字符类型,比如数字、空白符、单词开头、单词结尾等。这些元字符中的大多数以反斜杠\ 开头

符号含义
\d所有数字字符,等同于[0-9]
\w单词字符,表示所有英文字符、数字和下划线
\s空白符,包含tab字符以及换行符
\D表示所有非数字字符
\W表示所有非单词字符
\S表示所有非空白字符
.表示所有任意的字符(不包括换行符)
^匹配行首,^a 表示匹配所有行首的a
$匹配行尾,a$表示匹配所有行尾的a

贪婪匹配和懒惰匹配(lazy match)

之前讲述?+{}之类的限定符的时候,都是默认匹配尽可能多的字符

比如我想要限定HTML文本中的字符串:

<p> this is an example <p>

我们使用<.*> 来进行匹配,结果匹配下来的字符串会是:

<p> this is an example <p>

因为默认的贪婪匹配(greedy match)会匹配尽可能多的字符串,所以匹配了第一个

的左边"<“和第二个

右边的”>" 中间的所有字符串

解决方法:

使用<.*?>来讲贪婪匹配(greedy match)变成懒惰匹配(lazy match)

这样的话,匹配出来的字符串就会变成"p"和"p"两个标签

参考视频:https://www.bilibili.com/video/BV1da4y1p7iZ?from=search&seid=10813203089957646846.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值