正则表达式必知必会

来源:互联网 发布:如何安装办公软件 编辑:程序博客网 时间:2024/05/29 17:18

写在前面

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

必知必会的知识点

(1)字符

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

(2)预定义字符集

语法 说明 表达式 可匹配 \d 数字[0-9] \d 1,2,3…. \D 非数字[^\d] \D a,b,c… \s 空白字符 a\sc a c \S 非空白字符 a\Sc abc \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}c abbc {n,m} 匹配字符重复n到m次 ab{1,2}c abc, abbc {n,} 匹配字符至少重复n次 ab{2,}c abbc

(4)边界匹配

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

(5)逻辑分组

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

(6)特殊构造(预查)

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

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

原创粉丝点击