正则表达式-实践-初稿
来源:互联网 发布:小蚁 知乎 编辑:程序博客网 时间:2024/06/13 08:17
一、目前自己关于正则表达式的理解
1、什么是正则表达式,正则表达式有什么用?
正则表达式主要是用来做字符匹配的,有一套自己的匹配规则,目前基本上所有的高级语言(Java)、脚本语言(perl)、文本编码器(txt、editplus)和办公软件(excel)都支持正则表达式。
正则表达式主要就是制定一套字符的规则,然后验证当前的字符串是否满足该规则,并且能从中提取需要的字段及信息。
如:匹配一个URL(http://www.baidu.com等)
2、正则表达式的格式
正则表达式是通过一系统的特殊字符或者符号来表示某些含义(如:数字用什么表示、字符用什么表示等)。
正则表达式包含匹配的内容及次数等:
内容:数字、字符、特殊符号(如:空格等),
重复次数:如某些字符出现多于一次、或者(0-n)次等。
位置:以什么开头,以什么结尾等;
关系符:!等(猜测) --目前没有看到有该用法
分组:标记某些部分的规则为一组,方便该正则表达式其它地方进行引用,可以采用下标索引方式进行引用,也可以采用取别名的方式进行引用。
3、目前正则表达式的一些用途
(1) 传统:用于一些字符的匹配,如果URL、IP地址等;
(2) 大数据:用于在ETL阶段进行数据清洗,匹配相应的字符串,并且从中提取有价值的字段或信息;
(3) 爬虫:目前爬虫进行爬取数据的时候,需要从一个网页的海量数据中匹配信息进行提取;
实践:先找视频,直接进行基本实践
二、慕课网正则表达式的学习(python)
http://www.imooc.com/video/10506
1、正则表达式介绍
主要讲解了什么是正则表达式,正则表达式的作用以及使用的场景
(1) 正则表达式其实就是表达一个字符串的规则(比如:一个汽车有4个轮子和一个方向盘),然后验证当前的字符串是否满足这个规则(比如:根据该规则来判断该物品是否是一个洗车)。
(2) 其实该工作也可以采用传统的编码方式来实现(一般的语言都是提供一些字符串操作的函数,如:startwith(), endwith()等),但是如果采用这种编码方式不仅要针对每个规则写一些函数,而且有的字符串操作的函数还不太丰富,写起来会比较麻烦。
(3) 对一些数据的处理比较多的场景使用比较平凡,如果爬虫项目等;
2、python正则表达式之re模块1
介绍了python中的正则表达式模块re,其主要包含Pattern和Match两个模块,Pattern相当于正则表达式的规则,Match相当于正则表达式匹配字符串的结果,Match还提供了一函数,可以查看需要匹配的字符串和相应的正则表达式,并且还可以查看匹配的字符串及相应的索引等,大概的操作步骤如下:
re.compile(“正则表达式”):根据相应的正则表达式生成一个pattern对象 ;
Pattern.match(“待匹配的字符串”):根据待匹配的字符串生成一个Match对象(如果没有匹配上则结果为none);
3、python正则表达式之re模块2
主要讲解了re模块的一些相对高级的用法:
Pattern.match():还可以传入一些其它的参数,如果是否忽略大小写等;
Re.match():可以直接通过该方法生成Match对象,需要同时传入正则表达式和等匹配的字符串等。
如果需要多次使用pattern对象则可以先通过re.compile()生成Pattern对象,否则可以考虑直接通过re.match()方法生成Match对象。
4、python正则表达式语法1(匹配单个字符)
主要讲解正则表达式如何表示单个字符:
. :除/n之外的任意一个字符;
[...] :中括号中表示的是一个字符集,其含意为匹配中括号字符集中的任意一个字符;
\d / \D :表示数字[0-9] \非数字;
\s / \S :表示空白(space) \非空白;
\w / \W :表示单词(word)[0-9a-zA-Z] \非单词;
注意:其中的小写字母和大写字母的区别是取反的意思,小写的字母表示正常的含义,大写的字母表示在小写字母的基础上取反的意思。
个人的思考及总结:以上都是匹配单个字符的基本写法,单个字符包含(数字、字母(大小写)、特殊的字符(空白 , 、 : \n等));
类型
表示
备注
数字
\d或[0-9]
非数字
\D或![0-9]
此处的!是自己的猜测,应该会有关系运算符号在里面--目前没有看到有该用法
小写字母
[a-z]
非小写字母
![a-z]
大小字母
[A-Z]
非大小字母
![A-Z]
特殊字符
不知道
非特殊字符
不知道
还有一些相应的组合情况:如字符
/w或[a-zA-Z0-9]
此处的组合应该有很多种,相信以上的基本表示都可以满足
5、python正则表达式语法2(字符匹配的重复次数)
以面主要讲解匹配单个字符,本次主要讲解如何表达匹配字符的次数,因为有些场景的规则下不固定字符的个数,比如说用户名(比如:只要求是6个字符以上就行了),并且正常的模式下都是贪婪型的匹配(也就是尽可能多的去匹配字符)。
表达式
含义
备注
*
匹配前一个字符>=0次
+
匹配前一个字符>=1次
?
匹配前一个字符0-1次
{m} / {m, n}
{m}:匹配前一个字符m次;
{m, n}:匹配前一个字符m-n次;
*?(非贪婪型匹配)
在*匹配次数的基础上尽量少的去匹配;
+?(非贪婪型匹配)
在+匹配次数的基础上尽量少的去匹配;
注意:组合使用的时候,通过?表示非贪婪模式,及表示在?前面一个字符表示的匹配次数据的基础上尽量少的次数的去匹配。
6、python正则表达式语法3(边界和分组)
(1) 边界
有时候需要固定字符串匹配以什么开头,或者以什么结尾,所以有边界,其实也就正则表达式规定匹配的位置。
表达式
含义
备注
^
字符串以什么开头
不是仅仅指第一个字符,其含义就是匹配的结果为这个字符串开头
$
字符串以什么结尾
同上
\A / \Z
开头 / 结尾
同上
说明:位置只有开头和结尾两个,默认只要字符串匹配上就行,有可能在中间位置。
(2) 分组
在正则表达式匹配的过程中,可能有些部分的规则是一样的,在写正则表达式的时间没有必要再把这一部分规则再写一次。所以正则表达式引入了分组的概念。
表达式
含义
备注
|
表示或
a|b:表示在该位置匹配a字符或者b字符
(ab)
括号内的内容表示一个分组
\<number>
可以分组的索引号引用该分组
如:\1
(?P<name>)
表示给该分组取的别名
(?P=name)
表示引用该分组的内容
与\<number>类似
理论:看核心基础理论,系统化学习
实践:在系统学习的基础上进一步实践
- 正则表达式-实践-初稿
- mysql正则表达式实践
- 正则表达式-实践篇
- 正则表达式实践篇
- 正则表达式实践篇
- mysql数据-实践-初稿
- iOS正则表达式最佳实践
- iOS正则表达式最佳实践
- iOS正则表达式最佳实践
- iOS正则表达式最佳实践
- 正则表达式基础与实践
- python常用正则表达式以及实践
- iOS 开发中正则表达式实践(一)
- iOS 开发中正则表达式实践(一)
- Python爬虫实践(六):正则表达式(1)
- 正则表达式-零宽断言实践
- mysql中正则表达式表及实践
- 正则表达式实践(看完就会)
- 【mysql 字符串截取】SUBSTRING_INDEX用法
- Java异常处理
- 八皇后算法解析(java代码演示)
- java常用的正则表达式
- oracle和Hibernate的结合(详细图解)
- 正则表达式-实践-初稿
- 理解javascript中的回调函数(callback)
- css 图片设置为圆
- traceroute命令用法
- vue中出现 There are multiple modules with names that only differ in casing的问题
- 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
- scp拷贝文件夹
- 名额将满丨顶级大咖零距离授课,百余位高级产品经理共同学习产品总监必备能力
- css基础