正则表达式
1.什么是正则表达式
正则表达式: Regular Expression,是一些由特殊的字符和符号组成的字符串,主要用来进行高级的文本匹配、搜索、替换等功能操作。 不论是系统级别的软件(类似操作系统),或者应用程序软件中,对于字符串的操作都是最为频繁和复杂的,正则表达式(Regular Expresson)的出现,对于通过程序的方式自动的批量的进行字符串的操作提供了可行性。
正则表达式是一个独立的技术,在实际操作过程中被很多软件、编程语言等所支持PYTHON 中就提供了 re 模块对于正则表达式进行了非常良好的技术支持,正则操作处理和字符串在 python 中也是有着非常不错的处理效率的。在Java等语言中也广泛的使用正则表达式,和python中的操作基本一致。
正则表达式主要是进行字符串的运算,对于字符串的处理有着优秀的表现
2.正则表达式的基本操作语法
正则表达式的核心就是匹配,匹配用到的也是字符串,对于正则表达式的理解就需要对正则表达式的语法有一个比较良好的熟悉度。 下面针对正则表达式的常见操作,分成三个部分进行了简要描述,对正则表达式语法先有一个全面的了解。
2.1 基本正则语法
1.什么是正则表达式
正则表达式: Regular Expression,是一些由特殊的字符和符号组成的字符串,主要用来进行高级的文本匹配、搜索、替换等功能操作。 不论是系统级别的软件(类似操作系统),或者应用程序软件中,对于字符串的操作都是最
为频繁和复杂的,正则表达式(Regular Expresson)的出现,对于通过程序的方式自动的批量的进行字符串的操作提供了可行性。
正则表达式是一个独立的技术,在实际操作过程中被很多软件、编程语言等所支持PYTHON 中就提供了 re 模块对于正则表达式进行了非常良好的技术支持,正则操作处理和字符串在 python 中也是有着非常不错的处理效率的。在Java等语言中也广泛的使用正则表达式,和python中的操作基本一致
正则表达式主要是进行字符串的运算,对于字符串的处理有着优秀的表现,
2.正则表达式的基本操作语法
正则表达式的核心就是匹配,匹配用到的也是字符串,对于正则表达式的理解就需要对正则表达式的语法有一个比较良好的熟悉度。 下面针对正则表达式的常见操作,分成三个部分进行了简要描述,对正则表达式语法先有一个全面的了解。
2.1 基本正则语法
image.png2.2 正则表达式:元字符
image.png2.3 零宽断言[正则表达式]
image.png正则表达式的基础操作:
#引入需要的模块
import re
s = '''Are you new to Django or to programming? This is the place to start!
From scratch: Overview | Installation
Tutorial: Part 1: Requests and responses | Part 2: Models and the admin site
| Part 3:
Views and templates | Part 4: Forms and generic views | Part 5: Testing |
Part 6:
Static files | Part 7: Customizing the admin site
Advanced Tutorials: How to write reusable apps | Writing your first patch
for Django
'''
#01.基本语法:字符匹配
reg1 = r'Part'
print(re.findall(reg1,s)) #['Part', 'Part', 'Part', 'Part', 'Part', 'Part', 'Part']
#02.基本语法:或者匹配
reg2 = r'Are|admin'
print(re.findall(reg2,s)) #['Are', 'admin', 'admin']
#03.基本语法:开头匹配,只能匹配开头,其他不能匹配
reg3 = r'^Are'
print(re.findall(reg3,s))
#04.基本语法:结尾匹配
reg4 = r'Django$'
print(re.findall(reg4,s))
#05.任意字符匹配
reg5 = r'wr...'
print(re.findall(reg5,s))
2.4 贪婪匹配 $ 懒惰匹配(非贪婪匹配)
贪婪模式和懒惰模式(非贪婪)是在正则操作过程中,需要严格注意的一个问题,如果操作不当的话很容易在匹配过程中得到非正常数据或者垃圾数据。
贪婪模式:在正则表达式匹配成功的前提下,尽可能多的匹配结果数据(.*)
非贪婪模式:在正则表达式匹配成功的前提下,尽可能少的匹配结果数据(.*?)
一般在采集数据的是时候用到的非贪婪的模式比较多,因为在贪婪(.*)模式下进行匹配的时候,会根据正则条件在网站源代码或者其他要筛选的内容首尾位置进行筛选匹配,一旦发现符合条件的内容,就会停止匹配,这时从首尾位置匹配到的一个数据中包含了很多我们不想要的内容,就会产生大量的垃圾数据。
在非贪婪模式下,匹配的时候是根据正则表达式的条件在网站源代码或者其他要筛选的内容中从前往后一个一个的进行匹配,发现一个满足条件的就继续往下匹配,直到最后正则条件的末尾要求。
finally:所以说我们在一般操作中用到的是非贪婪模式|懒惰模式进行匹配,一般匹配的比较准确,也不会产生垃圾数据。
3. python 中的正则
python 中通过标准库 re 模块对于正则表达式进行良好的技术支持
3.1 为什么使用正则表达式
正则表达式本身就是对于字符串的高效处理, 尽管字符串本身也内置了一些操作函数,但是相对于较为复杂的需求,通过正则表达式的操作更加的灵活并且效率更高。
正则表达式在程序中的主要应用,有以下几个方面:
- 匹配:测试一个字符串是否符合正则表达式语法,返回 True 或者 False
- 获取:从目标字符串中,提取符合正则表达式语法的字符数
- 替换:在目标字符串中查询符合正则语法的字符,并替换成指定的字符串
- 分割:按照符合正则表达式的语法字符对目标字符串进行分割
网友评论