Python正则表达式初识(一)
首先跟大家简单唠叨两句为什么要学习正则表达式,为什么在网络爬虫的时候离不开正则表达式。正则表达式在处理字符串的时候扮演着非常重要的角色,在网络爬虫的时候也十分常用,大家可以把它学的简单一些,但是不能不学。
尽管网络爬虫相关库给我们提供了丰富的库如css、bs4、lxml等等,让我们可以通过选择器去匹配字符串,但是在HTML中数据往往存在标签之中。通过选择器确实可以匹配到标签的内容,但是有时候标签中存在的许多内容是冗余的,而我们只需要匹配其中部分内容即可(如匹配数字、时间等),如下图所示。通过选择器,我们一般可以获取到“782好笑”这个字符串,但是我们只需要“782”这个数字的话,此时正则表达式就要派上用场了
正则表达式可以帮我们判断某个字符串是否符合某一个模式,其次正则表达式可以帮我们提取某个字符串中的重要部分,做子字符串的提取。今天简单的给大家讲解几个正则表达式的特殊字符—— “^”、“.”、“*”,并且用实例进行演示,让大家对正则表达式有个初步的了解。
小编用的Python是3版本,开发环境用的是pycharm,首先在本地新建一个demo.py文件,接下来开始进行演示。
1、正则表达式在Python中有个专门的库叫re模块,首先进行导入模块。再定义一个字符串str,然后定义一个正则表达式匹配规则regex。
2、“^d”代表的意思是以d元素开头的任意一个字符串,也就是说只要是以d开头的字符串,后面的元素不论是什么,都是符合规则的,总之必须要以d开头。
3、“.” 较为常用,其代表的意思是任意字符,其表示的范围非常广,可以接任意字符,不论是中英文,还是下划线之类的特殊字符,都是可以代表的。举个栗子,正则表达式“^d.”就是代表以d开头的字符串,b后边接任意字符都可以。
4、“*” 也十分常用,其代表的意思是前面的字符可以重复任意多遍,可以是0次,1次,2次等任意多次。
5、了解好这几个特殊字符的用法之后,接下来通过代码简单的感受一下。如下图所示,如果匹配成功,则返回yes;如果没有匹配成功,则不返回任何东西。
可以看到程序运行之后,返回的结果为yes,说明匹配成功。正则表达式“^d.*”代表的意思是以d开头的字符串,后面跟着任意字符,出现任意多遍。显然,通过匹配可以得知该正则表达式匹配的结果和原始字符串一致,之后if判断返回值为true,所以打印出结果为yes。
6、为了进一步验证这个模式是否正确,我们将b改为a,其代表的意思该模式下的字符串是否以a开头的。之后再次运行程序,如下图所示。
此时可以看到无任何输出,说明特殊字符“^”起到了作用。
小伙伴们,快去打开Python,感受一下正则表达式的大法吧~~~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
php 利用pcntl扩展实现高并发
pcntl_fork官方描述:pcntl_fork — 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。 通过一段代码来理解pcntl_fork如何进行多进程并发执行的 $i = 2; while($i >= 0){ $pid = pcntl_fork(); if($pid > 0){ //当前处于父进程中 }elseif($pid == 0){ //这里是子进程逻辑 exit();//子进程跑完了必须退出。否则子进程会继续执行循环创建新的进程 }else{ //进程创建失败 } 当前进程通过pcntl_fork创建了一个子进程,创建完成后当前进程继续执行,此时$pid为创建子进程的进程id所以会进入pid > 0 的判断区块。同时,当父进程执行pcntl_fork时,php又会重新开启一个进程。该进程会拷贝父进程的变量,并且从pcntl_fork之后开始执行,因为进程为子进程,所以pid为0,会执行pid==0里...
- 下一篇
MySQL批量更新死锁案例分析
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xmt1139057136/article/details/82803467 问题描述 在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常,如下: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.GeneratedConstructorAccessor247.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19