热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:博文精选初探正则表达式|成电小百

篇首语:本文由编程笔记#小编为大家整理,主要介绍了博文精选初探正则表达式|成电小百相关的知识,希望对你有一定的参考价值。什么是正

篇首语:本文由编程笔记#小编为大家整理,主要介绍了博文精选 初探正则表达式 | 成电小百相关的知识,希望对你有一定的参考价值。



什么是正则表达式

引用百科的话:



正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。


许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成regex,单数有regexp、regex,复数有regexps、regexes、regexen。


引用链接: https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F



什么时候使用正则表达式

在有以下需求的时候使用



  • 从文本中找到我们想要的内容。


  • 检测一段文本是否符合设定好的规则



为什么使用正则表达式

正则表达式的本质是一个工具,好的工具能简化我们的思维复杂度和编程复杂度。

使用正则表达式完全是为了简化我们的代码,而不是为了炫技:D


如何使用正则表达式


例子1

例如我们想要修改某个配置文件,配置参数为 啥post啥size 的

我们用vim打开配置文件,输入

/\w*size\w*

【博文精选】 初探正则表达式 | 成电小百

然后回车,按n查找下一个,就能很快找到那一行了,原来我们要找的是postmaxsize。



例子2

检测上传的文件的文件名

我们想要jpg,png,gif

img0912.jpg
updated_img0912.png
favicon.gif

所以以下文件名应该被过滤

.bash_profile
workspace.doc
documentation.html
img0912.jpg.tmp
access.lock


例子3

正则表达式被很多编程语言支持,在c++中也不例外,看一个改编自《c++ primer》的示例

#include
int main()
{
   std::string s("[[:alpha:]]*[^c]ei[[:alpha:]]*");
   std::regex r(s);
   std::smatch m;
   std::string d("receipt freind theif receive");
   if (std::regex_search(d,m,r))
       std::cout<}
//output: freind

如何学习使用正则表达式

学习正则表达式的最好方法是实践,所以这里推荐一些网站和工具。

https://regex101.com/ in Javascript, Python, PCRE 16-bit, generates explanation of pattern

https://www.debuggex.com/ 正则验证测试,清晰明了

https://mengzhuo.org/regex/ 中文版正则验证测试

http://refiddle.com/ 测试工具

http://myregexp.com/ 也是测试工具,都可以试一试

http://regex.alf.nu 闯关模式练习正则表达式,完成一个个正则匹配的测验

http://regexone.com/ 通过实际练习掌握正则表达式

https://regexcrossword.com/ 正则挑战,有不同难度,很丰富

http://callumacrae.github.io/regex-tuesday/ 正则挑战,完成正则匹配要求

https://msdn.microsoft.com/zh-cn/library/az24scfc.aspx MSDN 微软出品

当然学习资料不只有这些,需要善用搜索引擎来发现。



推荐阅读
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
author-avatar
手机用户2502921201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有