C/C++教程

正则表达式学习笔记(https://regex101.com/)(自己复习查阅用)

本文主要是介绍正则表达式学习笔记(https://regex101.com/)(自己复习查阅用),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、限定符
    • 1、?(代表该字符可有可无)
    • 2、*(匹配0~无数个)
    • 3、+(匹配1~无数个)
    • 4、{}(限定字符个数)
  • 二、或运算
    • 5、|(代表或)
  • 三、字符类
    • 6、[](代表由[]中这几个字符组成的字符串)
    • 7、^(代表非)
  • 四、元字符
    • 8、\d(代表数字字符)
    • 9、\w(代表单词字符(单词、数字以及下划线))
    • 10、\s(代表空白符(包含tab(制表符)和换行符))
    • 11、\D(代表非数字字符)
    • 12、\W(非单词字符)
    • 13、\S(非空白字符)
    • 14、.(代表任意字符)
    • 15、^匹配行首,$匹配行尾
  • 五、贪婪与懒惰匹配
    • 16、贪婪懒惰匹配
  • 六、实例
    • 17、匹配所有十六进制的颜色
    • 18、IP地址的匹配
  • 总结


前言

https://www.bilibili.com/video/BV1da4y1p7iZ?from=search&seid=13994679721566855219
B站齐乐编程学院视频学习笔记


提示:以下是本篇文章正文内容,下面案例可供参考

一、限定符

1、?(代表该字符可有可无)

?代表?前面的这一个字符可以有可无,例,图中的used?,代表d可有可有可无,可以从字符串中匹配到use和used两种
在这里插入图片描述

2、*(匹配0~无数个)

代表前面的这一个字符可以有0个或者多个,例图中的ab*c,可以用来匹配到ac或者a与c中任意多个b的字符串
在这里插入图片描述

3、+(匹配1~无数个)

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串
在这里插入图片描述

4、{}(限定字符个数)

{}用于限定{}前这一个字符出现的次数,例下图中ab{2,6}c可以匹配到a与c中间存在2到6个b的字符串,无法匹配到abc、ac或者a与c中间存在7个及以上的b的字符串
在这里插入图片描述需要出现两次及以上
在这里插入图片描述也可以直接固定b的出现次数,直接写ab{6}c,这样就只能匹配到abbbbbbc

二、或运算

5、|(代表或)

|代表或,例图中的a (cat|dog)可以匹配到a cat或者a dog,若不加括号,a cat|dog则会匹配a cat或者dog
在这里插入图片描述在这里插入图片描述

三、字符类

6、[](代表由[]中这几个字符组成的字符串)

[]只匹配[]中有的字符,如下图[abc]+会匹配字符串中的a、b、c,存在一次以上的也会匹配到
在这里插入图片描述在这里插入图片描述在这里插入图片描述a-z代表所有的小写字符,A-Z代表所有的大写字符

在这里插入图片描述在这里插入图片描述

7、^(代表非)

[^0-9]+代表所有的非数字字符,包括换行符
在这里插入图片描述

四、元字符

8、\d(代表数字字符)

\d+相当于[0-9]+
在这里插入图片描述

9、\w(代表单词字符(单词、数字以及下划线))

在这里插入图片描述

10、\s(代表空白符(包含tab(制表符)和换行符))

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串

11、\D(代表非数字字符)

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串

12、\W(非单词字符)

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串

13、\S(非空白字符)

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串

14、.(代表任意字符)

.*就匹配任意字符出现0-无数次
在这里插入图片描述

15、^匹配行首,$匹配行尾

+代表匹配+前面这一个字符出现一次以上的字符串,例图中的ab+c可以匹配到abc或者a与c中间存在一个以上的b的字符串在这里插入图片描述
在这里插入图片描述

五、贪婪与懒惰匹配

16、贪婪懒惰匹配

.会匹配所有字符,.?会将默认的贪婪模式切换为懒惰模式
在这里插入图片描述在这里插入图片描述

六、实例

17、匹配所有十六进制的颜色

在这里插入图片描述在这里插入图片描述在这里插入图片描述#[a-fA-F0-9]{6}\b
十六进制的颜色必为#开头,十六进制为0-9加上a-f或者A-F,正好十六位,十六进制的颜色必为六位,所以使用{6}限定方括号中的字符只出现6个,而最后的\b用来代表单词字符的边界,若没有\b则会在#ffffffffff中匹配到#ffffff。
在这里插入图片描述

18、IP地址的匹配

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述\b((25[0-5]|(0|1)?\d\d?|2[0-4]\d\d).){3}(25[0-5]|(0|1)?\d\d?|2[0-4]\d\d)\b
因为ip区间为0.0.0.0255.255.255.255,所以若前两位为25则第三位只能在0-5之间,排除第一种情况,若第一位为2则第二位能在0-4之间,第三位为任意数据,则可以写为\d,若为0或者1开头则后面两位为任意数字,可以写作\d\d,还需考虑099,(0|1)可有可无,其中一个\d可有可无,写作(0|1)?\d\d?,使用.代表.,这样必须出现三次则限定为3,写作{3},还有最后一个,区间在0-255则复制前面括号中的这段,限定长度,分别在前后都加\b

在这里插入图片描述在这里插入图片描述在这里插入图片描述

总结

想要学习的小伙伴,可以去看看原视频,用于基础学习,word中进行匹配还是挺方便的。

这篇关于正则表达式学习笔记(https://regex101.com/)(自己复习查阅用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!