正则表达式是用来进行文本匹配的一种规则,在爬虫等方面应用很广,我之前也是一知半解,现在写下我再次学习的一些记录

首先推荐我学习的教程,正则练习网址: https://www.codejiaonang.com/    正则在线测试网站: https://regexr-cn.com/,在哔哩哔哩上也有视频教程,现在开始学习!


目录

1.单一字符匹配

2.区间字符匹配

3.特殊字符匹配

4.取反

5.快捷操作

6.重复匹配


1.单一字符匹配

字符匹配十分简单,只要输入你需要的字符即可匹配

有时候我们想知道的不只是单个字符有没有出现在备选项里,而是一组字符有没有出现出现备选项中,这时需要使用字符组([])字符组的作用是匹配[]中所有出现的字符,在下图中Java以及java均被匹配成功。

2.区间字符匹配

有时我们要匹配的不仅仅是a,b,c这样的单个字符,如果我们需要的是26个英文字母等ASCALL码连续的区间字符是就需要使用区间匹配(-)常用的有以下三条:

  1. 要匹配任意数字可以使用[0-9]
  2. 如果想要匹配所有小写字母,可以写成[a-z]
  3. 想要匹配所有大写字母可以写成[A-Z]

例如[0-9a-zA-z]所表示的就是匹配所有0-9,a-z,A-Z的字符

3.特殊字符匹配

我们使用了-、[、]等来代表了一些匹配操作,如果我们需要匹配这些字符就需要进行转义,转义字符就是\字符,跟C语言的类似

4.取反

有时我们需要取出除了一定范围内的字符,这时候就需要取反操作,取反操作十分简单,在字符组中加入^即可,如[^0-9]即匹配除0-9之外的字符。

5.快捷操作

对于一些常见的操作如匹配数字等,通常会有一些简短的字符来表示:

\w 与任意单词匹配
\d

与任意数字匹配

\s

匹配空白字符,比如空格,tab、换行等

\b 匹配单词边界

\b就是匹配处于边界位置的字符,如下图:

快捷取反:\d取数字\D取除数字外的字符(小写改为大写即可)

开始与结束:^表示以某字符串为开始,$表示以某字符串为结束

                         

匹配任意字符.字符代表匹配任何单个字符,它只能出现在方括号以外,有多少.就代表多个字符

可选字符:我们可以使用 ?符号指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次

在上例中第二个o就是可选字符,所以dog与doog都可被匹配

6.重复匹配

1.准确重复次数匹配

上述的都是匹配仅出现一次的字符串匹配,如果像匹配出现N次的字符则在后面加上{N}即可

2.可选重复次数匹配

有时我们不确定需要匹配字符的出现次数,这里重复区间就可以出场了,语法:{M,N}M是下界而N是上界,这里是贪婪模式,即尽可能多的匹配字符。在这里需要注意如果在表达式后面加上?则进入非贪婪模式。

                                 

第一张图出现2,3,4次均被匹配,第二张图仅匹配了出现次数为2的数字(最后一行相当于匹配了两次)

3.开闭区间

重复区间可以省略上界或省略下界

我们常用的就是{1,}以及{0,}两种,可以使用+以及*分别表示

                            

搞懂正则表达式之基础篇相关推荐

  1. 搞懂正则表达式之进阶篇

    在上一篇博文里我们学习了基础的正则表达式,学会这些还不足以应对工作学习,现在开始学习进阶篇的正则表达式. 目录 1.分组 2.或者 3.分组回溯 4.先行断言 5.后行断言 1.分组 在正则表达式中提 ...

  2. C++两个函数可以相互递归吗_[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进

    [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...

  3. [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进

    [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...

  4. 干货丨先搞懂这八大基础概念,再谈机器学习入门

    翻译 | AI科技大本营 参与 | 林椿眄 准备好开始AI了吗?可能你已经开始了在机器学习领域的实践学习,但是依然想要扩展你的知识并进一步了解那些你听过却没有时间了解的话题. 这些机器学习的专业术语能 ...

  5. python之正则表达式(基础篇)

    前言 在向网页进行了提交请求之类的之后,我们可以得到了网页的返回内容,里面自然而然会有我们想要的数据,但是html元素文本这么多,我们不可能一 一去找我们需要的数据,这时就需要用到正则表达式了,正则表 ...

  6. nginx location 正则表达式匹配多个地址_就是要让你搞懂Nginx,这篇就够了!

    Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好. Nginx 专为性能优化而开发,性能是其最重要 ...

  7. 一文搞懂 SQL:基础知识和业务实践总结

    作者:cooperyjli,腾讯 CDG 数据分析师 SQL的全称是Structured Query Language(结构化查询语言),是一种古老而简洁的程序设计语言.看似平平无奇,一直被各种吐槽, ...

  8. 先搞懂这八大基础概念,再谈机器学习入门!

    翻译 | AI科技大本营 参与 | 林椿眄 准备好开始AI了吗?可能你已经开始了在机器学习领域的实践学习,但是依然想要扩展你的知识并进一步了解那些你听过却没有时间了解的话题. 这些机器学习的专业术语能 ...

  9. 就是要让你搞懂 Nginx,这篇就够了!

    来自:CSDN,作者:渐暖° 链接:https://blog.csdn.net/yujing1314/article/details/107000737 " Nginx 是一个高性能的 HT ...

最新文章

  1. Git的工作区与暂存区
  2. java获取手机号码归属地_手机号码归属地能否取消?这些热点问题,工信部回复了...
  3. 修改Visual Studio 2010帮助位置
  4. Camera框架初探
  5. Matlab 图论最短路问题模型代码
  6. 【学习笔记】SAP 成本对象控制
  7. map比vo效率 mybatis_mybatis-plus插件使用的一些问题
  8. yunos5 linux内核,魅蓝5S、魅蓝5对比看差异 选Android还是YunOS?
  9. 单元测试(二)基本使用争议篇
  10. php excel 设置常规_php实现的操作excel类详解
  11. 媒体没谈到的企业即时通讯软件
  12. Java正则表达式例子汇总
  13. 腾讯广告算法大赛 | 萌新粉丝投稿讲述数据竞赛小白观赛心得
  14. select下拉框默认不能选择第一个选项的问题
  15. 武汉大学计算机学院创业老师,胡瑞敏 - 教师简历 CV- 武汉大学计算机学院
  16. AIR SDK 更新方法
  17. [RK3399][Android7.1] ADB功能怎么Debug
  18. esxi7.0虚拟机安装群辉DS3615-6.2.2版本
  19. ICE java实现helloworld
  20. 上海Apple面试php,面试Apple苹果APO的MQE经验

热门文章

  1. 说下网鼎杯第四场的双色块
  2. android 录屏
  3. 《ES6基础教程》之 Call 方法和 Apply 方法
  4. Ubuntu12.10-amd64系统上搭建Android4.2(JellyBean)源码开发环境
  5. BlogEngine(4)---Widget小部件
  6. 单核工作法9:消减待办任务
  7. Python学习笔记:SMTP服务器
  8. Linux下文件描述符
  9. 函数名称前面加引用“”或指针符号“*”的意思
  10. Caffe常用层参数介绍