一、前言

1.1正则表达式简述

正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用,比如正则表达式被用于:

1.检查文本中是否含有指定的特征词

2.找出文中匹配特征词的位置

3.从文本中提取信息,比如:字符串的子串

4.修改文本

与文本编辑器相似,几乎所有的高级编程语言都支持正则表达式。在这样的语境下,“文本”也就是一个字符串,可以执行的操作都是类似的。一些编程语言(比如Perl,JavaScript)会检查正则表达式的语法。

1.2 常用的正则匹配工具

在线匹配工具:

1. http://www.regexpal.com/

2. http://rubular.com/

正则匹配软件:

用过几个之后还是觉得这个是最好用的,支持将正则导成对应的语言如java C# js等还帮你转义了,Copy直接用就行了很方便,另外支持把正则表达式用法解释,如哪一段是捕获分组,哪段是贪婪匹配等等,总之用起来 So Happy .

1.3正则表达式语法

\w匹配字母数字及下划线

\W匹配非字母数字及下划线

\s匹配任意空白字符,等价于 [\t\n\r\f].

\S匹配任意非空字符

\d匹配任意数字,等价于 [0-9]

\D匹配任意非数字

\A匹配字符串开始

\Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

\z匹配字符串结束

\G匹配最后匹配完成的位置

\n匹配一个换行符

\t匹配一个制表符

^匹配字符串的开头

$匹配字符串的末尾。

.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

[...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'

[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。

*匹配0个或多个的表达式。

+匹配1个或多个的表达式。

?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

{n}精确匹配n个前面表达式。

{n, m}匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

a|b匹配a或b

( )匹配括号内的表达式,也表示一个组

可能完了之后就有点晕晕的了把,不用担心,下面我们会详细讲解下一些常见的规则的用法。怎么用它来从网页中提取我们想要的信息。

1.4Python中使用

其实正则表达式不是Python独有的,它在其他编程语言中也可以使用,但是Python的re库提供了整个正则表达式的实现,利用re库我们就可以在Python中使用正则表达式来,在Python中写正则表达式几乎都是用的这个库。

下面我们就来了解下它的用法。

match()

在这里首先介绍第一个常用的匹配方法,match()方法,我们向这个方法传入要匹配的字符串以及正则表达式,就可以来检测这个正则表达式是否匹配字符串了。

match()方法会尝试从字符串的起始位置匹配正则表达式,如果匹配,就返回匹配成功的结果,如果不匹配,那就返回None。

我们用一个实例来感受一下:

importre

content='Hello 123 4567 World_This a Regex Demo'

print(len(content))

result= re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}',content)printresultprintresult.group()print result.span()

输出结果:

在这里我们首先声明了一个字符串,包含英文字母、空白字符、数字等等内容,接下来我们写了一个正则表达式^Hello\s\d\d\d\s\d{4}\s\w{10}来匹配这个长字符串。

开头的^是匹配字符串的开头,也就是以Hello开头,然后\s匹配空白字符,用来匹配目标字符串的空格,\d匹配数字,三个\d匹配123,然后再写一个\s匹配空格,后面还有4567,我们其实可以依然用四个\d来匹配,但是这么写起来比较繁琐,所以在后面可以跟{4}代表匹配前面的字符四次,也就是匹配四个数字,这样也可以完成匹配,然后后面再紧接一个空白字符,然后\w{10}匹配10个字母及下划线,正则表达式到此为止就结束了,我们注意到其实并没有把目标字符串匹配完,不过这样依然可以进行匹配,只不过匹配结果短一点而已。

我们调用match()方法,第一个参数传入了正则表达式,第二个参数传入了要匹配的字符串。

打印输出一下结果,可以看到结果是SRE_Match对象,证明成功匹配,它有两个方法,group()方法可以输出匹配到的内容,结果是Hello 123 4567 World_This,这恰好是我们正则表达式规则所匹配的内容,span()方法可以输出匹配的范围,结果是(0, 25),这个就是匹配到的结果字符串在原字符串中的位置范围。

通过上面的例子我们可以基本了解怎样在Python中怎样使用正则表达式来匹配一段文字。

二、正则表达式练习

初级练习

1、求非负整数 : ^\d+$

Tips:需要注意的是这个匹配模式为多行模式下进行的

2、匹配正整数: ^[1-9]*[1-9][0-9]*$ 在网上也有这种写法的 ^[0-9]*[1-9][0-9]*$

这里截图我也不贴了,前者指能匹配123012这种整数,而后者可以匹配001230。

取舍就看实际的需要了

3、非正整数:^(-\d+|(0+))$

4、负整数:^-[0-9]*[1-9][0-9]*$

5、整数 :^-?\d+$

6、非负浮点数 :^\d+(\.\d+)?$

7、正浮点数 :^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

8、非正浮点数 :^((-\d+(\.\d+)?)|(0+(\.0+)?))$

9、负浮点数:^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

10、浮点数:^(-?\d+)(\.\d+)?$

11、有数字、26个英文字母组成的字符串:^[A-Za-z0-9]+$

中级练习

1、长度为8-10的用户密码(以字母开头、数字、下划线)

^[a-zA-Z]\w{7,10}$

2、验证输入只能是汉字 : ^[\u4e00-\u9fa5]{0,}$

3、电子邮箱验证:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

4、URL地址验证:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

6、简单的身份证号验证:\d{15}|\d{18}$

..............................

高级练习

1、提取并捕获html标签内容:

]*)+href=([^ >]*)(?: [^>]*)*>

以上练习是参考网上的。写的不好之处,请大家多多指教。

python正则表达式数字开头_Python基础 :正则表达式相关推荐

  1. python正则表达式数字开头_Python正则表达式总结

    基础匹配 '\d' 可以匹配一个数字,'00\d'可以匹配'007': '\w' 可以匹配一个字母或者数字,'00\w'可以匹配'007'或者'00a': '\s' 可以匹配一个空格: '.'可以匹配 ...

  2. python的数字运算_Python基础语法——数字运算

    数字运算 编程是将问题数据化的一个过程,数据离不开数字,Python的数字运算规则与我们学习的四则运算规则是一样的,即使不使用Python来编写复杂的程序,也可以将其当作一个强大的计算器.打开Pyth ...

  3. python匹配数字开头的内容_python使用正则表达式匹配字符串开头并打印示例

    python 正则表达式,怎样匹配以某个字符串开头,以str ="abcdefg123213qwe" 比如要匹配以abc开头,以qwe结尾,要怎样写呢?匹配以某个字符串开头,以某个 ...

  4. python正则表达式匹配模式_Python与正则表达式[0] - re 模块的正则表达式匹配

    正则表达式/ Regular Expression 目录 正则表达式RE(Regular Expression, Regexp, Regex),又称为正规表示法,正规表达式,规则表达式,常规表达式,常 ...

  5. python re正则匹配_python re正则表达式模块

    模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等 复习一下基本的正则表达式吧 .:匹配除了换行符以为的任意单个字符 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式 +:匹配位于 ...

  6. python复数的实部和虚部的数字类型_Python基础:数据类型-数字(5)

    在Python中,所有的数据类型都是类,每一个变量都是类的实例. Python中有6种标准数据类型:数字(Number).字符串(String).列表(List).元组(Tuple).集合(Sets) ...

  7. python为什么不能以数字开头_python变量为什么不能以数字开头

    任何事情只要有人规定成文了,必定有其原因所在,也就是有其合理性所在. Python变量命名规则(推荐学习:Python视频教程) 变量名只能包含字母.数字和下划线.变量名可以字母或下划线开头,但不能以 ...

  8. python语言提供的三个基本数字类型_python 基础知识第3讲:基本数据类型

    1.概念 1.1表达式 表达式是由数据.算符.数字分组符号().自由变量和约束变量等以能求得数值的有意义的排列方法所得的组合(类似于数学的公式). 如 1+1 2+1 1.2语句 一个语法上自成体系的 ...

  9. python正则表达式分组替换_python使用正则表达式替换匹配成功的组

    正则表达式简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一 ...

最新文章

  1. python查看所有异常_如何获取python异常发生的实际行号?
  2. 【FPGA】Buffer专题介绍(二)
  3. Spring 5.0 源码编译, 403, 404 依赖pom 无法下载问题
  4. 如何使用 Kubernetes 监测定位慢调用
  5. springboot 多线程_redis官方推荐:SpringBoot用这个,一键多线程
  6. [Vue.js] 深入 -- 案例 - 购物车
  7. CentOS Apache服务器配置https
  8. 七十三、分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect传递参数...
  9. 利用SolidWorks解决方案取得健身器材市场的领先地位!
  10. 傅一平:业务流程的数字化到底是什么?
  11. RMSE(均方根误差)、MSE(均方误差)、MAE(平均绝对误差)、SD(标准差)
  12. python爬虫登录微博账号_python模拟登录新浪微博 python新浪微博爬虫
  13. iOS中都有什么设计模式?各个设计模式的作用?
  14. 计算机硬件——显示器原理
  15. 博链财经专访MDUKEY创始人韩元桢
  16. linux对只有Read-only filesystem的文件,如何改为为可写、可读权限?
  17. 开源的APP+小程序商城源码推荐,可支持二次开发。
  18. 递归神经网络的不可思议的有效性
  19. 铁甲雄心机器人冠军_如何评价机器人格斗节目《铁甲雄心》?
  20. 中国汽车品牌口碑榜之:--2013年第3季度广州小型车综合口碑排名

热门文章

  1. 魔鬼细节之Java Programming
  2. 线程分离属性,线程取消(状态,类型),线程取消例程函数
  3. python正整数平方根_python怎么求一个数的平方根
  4. Cookie、session以及localStorage与sessionStorage之间的区别
  5. 2021.12- 参加第四届海淀区青少年科普科幻创作活动(一等奖)
  6. 《那一世》——仓央嘉措
  7. 动态加载script 加载完成回调事件
  8. 淘宝/天猫撸猫猫领喵币、京东全民营业领京豆二合一助手,自动完成双11任务,分享源码
  9. 【Go进阶】如何让你Go项目中日志清晰有趣-Zap日志库
  10. 附录3:RMA算法原理