python re正则表达式基本使用介绍

何为正则表达式?

正则表达式为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础。

简单来说,正则表达式(Regular Expression,简称regex)是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,正则表达式能按照某种模式匹配一系列有相似特征的字符串。

python re模块提供正则功能

以下是一些基本使用:

#正则表达式元字符

1)  .  (通配符)除了换行符外均可代指

#ret = re.findall(‘w..l‘,s)
#print ret

2) ^ 开始匹配(从开头开始匹配)

#ret = re.findall(‘^h...o‘,‘hejaodflhello‘)
#print(ret)

3) $ 从结尾匹配

# ret = re.findall(‘a..x$‘,‘afjdlajfa faf alox‘)
# print ret

4) *  重复匹配(*前字符[0 正无穷多])

# ret = re.findall(‘ab*‘,‘falfa;ldfafbaalexlil‘)
# print(ret)

5) +  匹配重复[1, 无穷多]

# ret = re.findall(‘ab+‘,‘falfa;ldfabfbaabbleab2xlil‘)
# print(ret)
# ret = re.findall(‘a+b‘,‘falfa;ldfabfbaabbleab2xla2bil‘)
# print ret

6) ?  [0,1] 次

# ret = re.findall(‘a?b‘,‘falfa;ldfabfbaabblea3b2xlil‘)
# print ret

7) { } 指定前面字符出现的次数

# ret = re.findall(‘a{5}b‘,"abxkaaaaab,abbbbbaaabblfjdasssssbwl")
# print ret
# ret = re.findall(‘a{1,3}b‘,"abxkaaab,abbbbbabblfjdaabwl")
# print ret

8) 字符集及范围匹配 [ ]

#或关系选取

# ret = re.findall(‘a[c,d]x‘,‘acxbaadx‘)
# print ret

范围选取

[0-9] 等同于\d   匹配任何十进制数字 \D与之相反匹配任何非数值型的数字

[a-z] 匹配小与字母

[A-Z]匹配大写字母

[a-zA-Z0-9] 等同于 \w 匹配任何字母数字和字符   \W与之相反

\s 匹配任何空格字符 等同于[\n\t\r\v\f]    \S 与之相反

# ret = re.findall(‘[a-z]‘,‘abcdef‘)
# print ret

#[ ]取消元字符的特殊功能有三例除外(\ ^  -)

# ret = re.findall(‘[w,*,.,,]‘,‘wa,x.dx*‘)
# print ret
#取数字大小写字母
# ret = re.findall(‘[0-9a-zA-Z]‘,‘123tsAD‘) 
# print ret
#结果:[‘1‘, ‘2‘, ‘3‘, ‘t‘, ‘s‘, ‘A‘, ‘D‘]

总结:
*  等同于 {0,无穷多}    也等价于  {0,}
+ 等价于 {1,无穷}  也等价于  {1,}
?  等价于 {0,1}

取反

# ret = re.findall(‘^t‘,‘t12iu3tsAD‘)   #正常的取t开头的字符t
# print ret
# ret = re.findall(‘[^t,3]‘,‘t12iu3tsAD‘)    #取除t或3外的字符
# print ret
#结果: [‘1‘, ‘2‘, ‘i‘, ‘u‘, ‘s‘, ‘A‘, ‘D‘]

\ 反斜杠功能
#功能有二:
#反斜杠后边跟随元字符去除特殊功能
#反斜杠后跟部分普通字符实现特殊功能

#\b  匹配边界 任何特殊字符边界

# print(re.findall(r‘I\b‘,‘Hello,I am a LI$sT.I,‘))
#结果:[‘I‘, ‘I‘, ‘I‘]
# print(re.findall(r‘\bI‘,‘Hello Iam a LI$sTI,‘))
#结果: [‘I‘]

re的常用方法

1、re.match方法

只在字符串开始匹配,也返回匹配到的第一个对象,匹配到返回

否则返回None

obj = re.compile("\.com")
ret = obj.match("
print ret  #结果None

2、re.search方法与re.findall
#re.search()  符合第一个条件的,返回对象,并通过group方法获取匹配到的结果

#re.findall() 把所有符合的结果放入列表 中。

# ret = re.search(‘(?P<id>\d{3})/(?P<name>\w{3})‘,‘weeew34tttt123/pppp‘)
# print(ret.group())  #结果:123/ppp
# print(ret.group(‘id‘))   #结果:123
# print(ret.group(‘name‘))  #结果 ppp
#ret = re.findall(‘(?P<id>\d{3})/(?P<name>\w{3})‘,‘weeew34tttt123/pppp‘)# print ret 
#结果是所符合的存在于列表中:[(‘123‘, ‘ppp‘)]

3、re.compile 先编译成匹配对象可以供其他方法多次调用

obj = re.compile(‘\.com‘)ret = obj.findall("www.baidu.com,https://www.google.com.cn")print ret   #结果[‘.com‘, ‘.com‘]
ret = obj.search(www.baidu.com,https://www.google.com.cn).group()
print ret   #结果.com

本文只是简单说明了正则表达式的基本应用。更多扩展用法请参考这里。https://deerchao.net/tutorials/regex/regex.htm

时间: 2024-08-01 14:36:59

python re正则表达式基本使用介绍的相关文章

python的正则表达式

1.1. 正则表达式的简单介绍 正则表达式并不是python特有的,它在其他编程语言中也有运用到,它不属于任何编程语言,它是独立开来的一种用于处理字符串的强大工具,拥有自己独特的语法. 下面这个图是正则表达式的详细规则 1.2. 正则中的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串.Python里当用+?*去匹配的时候默认是贪婪的,总是尝试匹配尽可能多的字符:非贪婪的则相反,总是尝试匹配尽可能少的字符,在+?*后面加个?.例如:正则表达式"xy*"如果用于查找&qu

python study - 正则表达式

第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. 校验十位数和个位数 7.5. 松散正则表达式 7.6. 个案研究:解析电话号码 7.7. 小结 正则表达式是搜索.替换和解析复杂字符模式的一种强大而标准的方法.如果你曾经在其他语言 (如 Perl) 中使用过它,由于它们的语法非常相似,你仅仅阅读一下 re 模块的摘要,大致了解其中可用的函数和参数就

python的正则表达式 re

python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用'\\\\'来做为正则表达式的字符串,因为正则表达式要是\\,而字符串里,每个反斜杆都要写

Python re正则表达式模块学习【转】

感谢原作者,本文转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 博主还有一些比较好的python文档在此一并推荐,可以移步查看. 文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whate

[python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pythonpython爬虫正则表达式html知识总结 2016-04-07 06:13 3615人阅读 评论(4) 收藏 举报  分类: Python爬虫(23)  Python基础知识(17)  版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 这篇文章主要是介绍Pytho

第五章 python中正则表达式的使用

第一节    正则表达式的一些介绍 1)掌握正则表达式的案例 2)写一个小爬虫 3)正则表达式(或RE)是一个小型的.高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现. - 可以为想要匹配的相应字符串集指定规则 - 该字符串集可能包含英文语句.e-mail地址.命令或任何你想搞定的东西 - 可以问诸如“这个字符串匹配该模式吗?” - “在这个字符串中是否有部分匹配该模式呢?” - 你也可以使用RE以各种方式来修改或分割字符串. 4)正则表达式模式被编译成一系列

python基础31[常用模块介绍]

python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能. * pickle: pickle模块被用来序列化python的对象到bytes流,从

Python常用的库简单介绍一下

Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构建格式化的输出. difflib ,[Python]标准库,计算文本差异 . Levenshtein ,快速计算字符串相似度. Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. shortuuid ,一组简洁URL/UUID函数库. ftfy ,Uni

python 中正则表达式

. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!). [0-9]代表的含意与\d就是完全一致的:一位数字:同理[a-z0-9A-Z_]也完