正则表达式必知必会

写在前面

对于正则表达式,我相信很多人的都和我一样,看一眼,迷迷糊糊,要用到的时候也是直接百度现成的,知乎上关于如何学好正则表达式一致的说法都是”无他,唯手熟尔”。我们每次百度现成的就会少一次自己独立思考的机会,虽然之前有学过一丁半点,但用得少了自然也就忘得差不多了,我觉得这不利于我今后学习Python写爬虫,故写上一篇,记录关于正则表达式的一些必知必会的知识点。
先推荐一个不错的网站https://regexper.com/通过这个可视化工具将正则表达式转换成状态机,这样可以更有效地理解别人所写的正则表达式了。

必知必会的知识点

(1)字符

语法说明表达式可匹配
任意普通字符匹配自身abcabc
\转义字符a\\ba\b
.匹配除了换行符以外的任何字符 相当于\w的加强版(\w看下面一张表)可匹配空格.+a c1b
[…]字符集 可以都写出来也可以写个范围如[a-z],第一个字符如果是\^表示取反,如[\^a]表示a除外的所有字符,如果字符集内有特殊字符,需要转义a[bc]dabd,acd

(2)预定义字符集

语法说明表达式可匹配
\d数字[0-9]\d1,2,3….
\D非数字[^\d]\Da,b,c…
\s空白字符a\sca c
\S非空白字符a\Scabc
\w匹配字母,数字,下划线[A-Za-z0-9_]\w+a_b 1
\W匹配任意不是字母,数字,下划线 的字符

(3)量词

语法说明表达式可匹配
*匹配字符重复0次或无限次ab*a,ab,abb,abbbb…
+匹配字符重复1次或无限次ab+ab, abb, abbb…
?匹配字符重复0次或1次ab?a, ab
{n}匹配字符重复n次ab{2}cabbc
{n,m}匹配字符重复n到m次ab{1,2}cabc, abbc
{n,}匹配字符至少重复n次ab{2,}cabbc

(4)边界匹配

语法说明表达式可匹配
^匹配行或字符串的开头^aa
$匹配行或字符串的结尾c$c
\A匹配字符串的开头\Aaa
\Z匹配字符串的结尾c\Zc
\b不会消耗任何字符只匹配一个位置(单词边界,\w能表示的范围)\bb\ba b c的b,a!b!c的b

(5)逻辑分组

语法说明表达式可匹配
|或,左右表达式匹配一个即可ab|cdab,cd
(…)一个左右括号为一个分组,分组有自己的编号,做左到右每遇到一个左括号分组编号就+1。分组后面可接量词,在分组中的|范围也仅仅在这个分组内有效(a){2}aa

(6)特殊构造(预查)

语法说明表达式可匹配
(?:)非获取匹配a(?:bc|cd)abc,acd
(?=…)之后的内容需要匹配a(?=\d)匹配a后面是数字的字符串
(?!…)之后的内容需要不匹配a(?!\d)匹配a后面不是数字的字符串
(?<=…)之前的内容需要匹配(?<=\d)a匹配a前面是数字的字符串
(?<!…)之前的内容需要不匹配(?<!\d)a匹配a前面不是数字的字符串

以上是目前我总结出来的需要熟稔于心的基本的正则语法。当然,网上同样的总结也有很多,留一份供自己日后参考用。
最后演示一下我推荐的那个网站(匹配IP地址),看起来是不是很棒?一目了然
这里写图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值