在很多技术领域(如:自然语言处理,数据存储等),正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!

一、概念

正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。

正则表达式目前被集成到了各种文本编辑器/文本处理工具当中

二、应用场景

(1)验证:表单提交时,进行用户名密码的验证。

(2)查找:从大量信息中快速提取指定内容,在一批url中,查找指定url。

(3)替换:将指定格式的文本进行正则匹配查找,找到之后进行特定替换。

三、基本要素

(1)字符类

(2)数量限定符

(3)位置限定符

(4)特殊符号

注意:正则表达式基本是与语言无关的,我们可以结合语言/工具与正则表达式进行文本处理,在后面的博客中,我将使用grep来进行验证。(grep是一款Linux下按行匹配文本的工具,如下,使我们常使用的两个选项)

-E:使用扩展正则匹配

--color:将匹配得到的内容进行语法高亮

1.字符类

举例如下:

例1:

注意:1.grep采用的贪心匹配,它会匹配当前行中的所有匹配内容

2.echo $?表示是否匹配成功(如果成功返回值为0,不成功返回值为1)

例2:

例3:

例4:

例5:

2.数量限定符

举例如下:

例1:

例2:

由此,我们可以看出,“前面的单元”默认是指?或+前面的字符

例3:

例4:

例5:

例6:

注意:该结果为匹配失败,在相关文档中并未出现,应该啊是错误或者废弃的用法

例7:

3.位置限定符

举例如下:

例1:

例2:

例3:

例4:

例5:

例6:

4.特殊符号

举例如下:

假如我们去掉-E选项,会有什么现象呢?

此时,不难发现,去掉-E选项之后没有进行正常的正则匹配,这种现象需要我们引入如下的两个概念!

5.基本正则表达式&扩展正则表达式

区别:正则表达式的扩展正则(Extended规范)和基本正则(Basic规范)下,有些字符应该解释为普通字符,要表示上述特殊含义则需要加“\”转义字符。反之,在扩展规范下,应被理解为特殊含义,要取其字面值,也要对其进行“\”转义。

因此,grep工具带上-E选项,表示使用扩展正则来进行匹配,若没有该选项,则表示使用基准正则来进行匹配。

对于上述的问题,我们举例如下:

例1:

例2:当目标字符串当中本身就包含了字符,要想进行正则匹配,应该这样做:

例3:

5.其他普通字符集及其替换

举个例子:

综上,正则表达式有以下三个分类:

(1)基本正则表达式:Basic即BPEs

(2)扩展正则表达式:Extended即EREs

(3)Perl的正则表达式:PREs

因此,当grep指令不跟任何参数时,表示要使用BREs,后面跟“-E”表示使用EREs,后面跟“-P”参数,表示使用PREs

四、贪婪模式与非贪婪模式

1.贪婪模式:正则表达式匹配时,会尽量多的匹配符合条件的内容

举例如下:

注意:grep默认采用贪婪匹配,可能会对我们的测试结果造成干扰,大家可以上网使用“正则在线转换工具”进行测试

2.非贪婪模式:正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)

举例如下:

五、零宽断言

1.所谓断言,是用来声明一个应该为真的事实。在正则表达式中,只有当断言为真时才会继续进行匹配。

2.零宽断言:像用于查找某些内容之前或者之后的东西,其中一些特殊字符如“\b、^、$”等用于指定一个位置,这个位置应满足一定的条件。

3.分类:

(1)零宽度正预测先行断言(?=exp)

它断言自身出现的位置之后能匹配的表达式exp。如:\b\w+(?=ing\b),表示匹配以ing结尾的单词的前面的部分(除ing以外的部分)。当我们要查找“I'm singing while you're dancing.”时,它会匹配sing和danc

举例如下:

(2)零宽度正回顾后发断言(?>=exp)

它断言自身出现的位置的前面能匹配的表达式exp。如:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除er以外的部分),例如:在查找“reading a book”时,它匹配ading

举例如下:

六、简单练习

1.手机号码

2.非零的正整数

3.非零开头的最多带两位小数的数字

4.由数字和26位字母组成的字符串

5.QQ号,从10000开始

6.IP地址

\d+\.\d+\.\d+\.\d+

7.判断账号是否合法

^[a-zA-Z0-9][a-zA-Z0-9_]{4,15}$

8.日期格式

^\d{4}-\d{1,2}-\d{1,2}

正则表达式的学习就到这里结束啦,如果有小伙伴没有看明白的,可以上网查询正则的更多知识点!


http://www.taodudu.cc/news/show-2339618.html

相关文章:

  • 什么是正则表达式
  • 什么是正则表达式?
  • AlphaGo Zero详解
  • pyodbc 测试连接 SQL Server 数据库
  • pyodbc-操作SQLserver
  • python找不到模块pyodbc_Python:找不到pyodbc导入模块
  • pip install pyodbc : ERROR: Command errored out with exit status 1
  • python 使用 pyodbc 访问 Sql Server
  • Python连接SQL Server 之pyodbc
  • linux系统pyodbc安装与使用教程
  • 第一章 Python pyodbc连接access数据库的使用方法
  • pyodbc 操作SQL Server数据库
  • pyodbc 连接oracle
  • pyodbc mysql_Robot Framework 通过pyodbc连接Mysql
  • pyodbc mysql_pyodbc and mySQL
  • 如何使用pyodbc
  • python找不到模块pyodbc_python安装pyodbc模块
  • linux安装pyodbc模块,Linux下安装pyodbc报错 error: command 'gcc' failed with exit status 1
  • pyodbc的使用
  • python pyodbc mysql,【python】 pyodbc连接mysql
  • pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
  • pyodbc linux 乱码,python-无法在Linux上安装pyodbc
  • pyodbc
  • 【已成功安装但无法使用】Python 3.10.2 安装pyodbc
  • Python数据库操作-pyodbc
  • Python使用pyodbc访问数据库操作方法详解
  • python pyodbc使用方法
  • GPU集群管理系统
  • 菲尔·席勒(Phil Schiller)卸任苹果全球营销高级副总裁,升任苹果研究员
  • python selenium爬虫入门案例day04:Vhiphop街舞视频

正则表达式详解及示例相关推荐

  1. python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象 ...

  2. JS正则表达式详解2

    JS的正则表达式详解 //校验是否全由数字组成 代码 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) retu ...

  3. 百度PaddleOCR及云平台OCR API详解及示例

    百度PaddleOCR及云平台OCR API详解及示例 目录 百度PaddleOCR及云平台OCR API详解及示例 使用百度开源的PaddleOCR 多个开源代码库比较

  4. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  5. 菜鸟教程python正则表达式_python 正则表达式详解

    python 正则表达式详解 1. 正则表达式模式 模式描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字 ...

  6. Oracle创建表语句(Create table)语法详解及示例

    Oracle创建表语句(Create table)语法详解及示例   创建表(Create table)语法详解 1. ORACLE常用的字段类型ORACLE常用的字段类型有 VARCHAR2 (si ...

  7. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  8. python中正则表达式_Python中正则表达式详解

    正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家.操作符说明实例.表示任何单个字符 [ ]字符集,单个字符取值范围[abc]表示a或b ...

  9. java判断颜色合法_判断颜色是否合法的正则表达式(详解)

    判断颜色是否合法的正则表达式(详解) "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; 意思是:以#开头,后面是数字和a-f的字符(大写或小写),这个值是 ...

  10. Math 的 ceil、floor、round方法详解及示例

    Math 的 ceil.floor.round方法详解及示例 大家好,我是酷酷的韩~ 一.Math.ceil() ceil的英文意义是天花板,该方法就表示向上取整(取大),Math.ceil(9.1) ...

最新文章

  1. VS 2010 IDE 宏学习总结
  2. 经典|深入理解 Go高性能网络编程模型
  3. vba动态二维数组_VBA实战技巧05: 动态调整数组以存储所需数据
  4. 工作32:get之前打印
  5. mysql调优_MYSQL企业常用架构与调优经验分享
  6. metinfo mysql_Metinfo 5.3.17 前台SQL注入漏洞
  7. 6000字说透,如何做好产品「适老化」!
  8. 【hortonworks/registry】registry 如何创建 互相依赖的 schema
  9. JQUERY-SELECT 实现下拉框可以搜索、选择
  10. 对于JQuery Mobile的介绍
  11. 未来的几年,不可能再有岁月静好
  12. jquery中的css() animate() width()的都可以运用相对值
  13. OpenFeign实现微服务间的文件下载
  14. 【C语言打印三角形】
  15. CAS-KG——知识图谱数据的存储与检索
  16. 【MySQL从入门到精通】【高级篇】(九)InnoDB的B+树索引的注意事项
  17. DTI处理工具包PANDA小白记录
  18. 厚物科技定制三屏加固便携机HW-8700TS
  19. Electron 麒麟 Linux 系统 root 账户报错
  20. Asus EeePC X101上网本为MeeGo带来新的生机

热门文章

  1. 恒讯科技分享:rust服务器搭建教程
  2. matlab 色彩的范围,Matlab - 将2个颜色条设置为带有色彩图和良好范围的2个图例...
  3. 旋律生成算法的现状与挑战
  4. 英尺英寸和厘米的换算_英尺米换算(英尺英寸与厘米换算器)
  5. ORACLE--comment 通过表注释/通过注释查询表名
  6. stream 内存带宽测试工具
  7. 【动力学】汽车性能仿真系统含Matlab源码
  8. 甲骨文裁员事件的思考
  9. 迅雷下载提示:应版权方要求/包含违规内容, 文件无法下载
  10. 关系数据库与对象数据库