摘要:正则表达式关闭或可选标志。如果所含正则表达式,以表示,在当前位置成功匹配时成功,否则失败。否则指的是八进制字符码的表达式。
正则表达式是个很牛逼的东西,不管是在javascript,还是在Python web开发(http://www.maiziedu.com/course/python-px...)中,我们都会遇到正则表达式,虽然javascript和Python的正则表达式区别不大,但是正则表达式是Python中必不可少的一部分,所以今天就跟大家一起讨论一下python中的re模块。
re模块包含对正则表达式的支持。
什么是正则:
正则表达式是可以匹配文本片段的模式。
正则表达式’Python’可以匹配’python’
通配符
.表示匹配任何字符:
‘.ython’可以匹配’python’和’fython’
对特殊字符进行转义:
‘python.org’匹配‘python.org’
字符集
‘[pj]ython’能够匹配’python’和’jython’
反转字符集
‘1’可以匹配除了abc之外的任何字符
选择符
使用管道符号|
可选项
加上问好就变为了可选项:
r’(http://)?(www.)?python.org‘只能匹配下面几种:
"http://www.python.org"
"http://python.org"
"www.python.org"
"python.org"
重复子模式
*:允许模式重复0次或多次
+:允许模式重复1次或多次
{m, n}允许模式重复m-n次
当然,正则语法规则很多,远不止上面的这些。但是我们只能点到为止了,因为这篇博客的目的是介绍Python中的模块,re模块。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
re中重要的函数:
compile(pattern[, flags]) 根据包含正则表达式的字符串创建模式对象
search(pattern, string[, flags]) 在字符串中寻找模式
match(pattern, string[, flags]) 在字符串的开始处匹配模式split(pattern, string[, maxsplit=0]) 根据匹配项分割字符串
findall(pattern, string) 列出字符串中模式的所有匹配项sub(pat, rep, string[, count=0]) 字符串中所有pat的匹配项用repl替换
escape(string) 将字符串中所有特殊表达式字符转义
下面就进行简单的应用:
使用match
import re
print(re.match("www", "www.runoob.com").span()) # 在起始位置匹配
print(re.match("com", "www.runoob.com")) # 不在起始位置匹配
使用search
import reprint(re.search("www", "www.runoob.com").span()) # 在起始位置匹配print(re.search("com", "www.runoob.com").span()) # 不在起始位置匹配
这时候需要停一下,match和search的区别呢?
看看结果先:
match例子中结果:
(0, 3)None
search例子中结果:
(0, 3)
(11, 14)
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配;
也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。
search()会扫描整个字符串并返回第一个成功的匹配。
使用sub
Python 的re模块提供了re.sub用于替换字符串中的匹配项。
phone = "2004-959-559 # This is Phone Number"
Delete Python-style commentsnum = re.sub(r"#.*$", "", phone)print "Phone Num : ", num
Remove anything other than digitsnum = re.sub(r"D", "", phone) print "Phone Num : ", num
结果:
Phone Num : 2004-959-559
Phone Num : 2004959559
最后献上菊花:
^ 匹配字符串的开头
$ 匹配字符串的末尾。
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...] 用来表示一组字符,多带带列出:[amk] 匹配 "a","m"或"k"
2 不在[]中的字符:1 匹配除了a,b,c之外的字符。
re* 匹配0个或多个的表达式。
re+ 匹配1个或多个的表达式。
re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
re{ n}
re{ n,} 精确匹配n个前面表达式。
re{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
a| b 匹配a或b
(re) G匹配括号内的表达式,也表示一个组
(?imx) 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
(?-imx) 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。
(?: re) 类似 (...), 但是不表示一个组
(?imx: re) 在括号中使用i, m, 或 x 可选标志
(?-imx: re) 在括号中不使用i, m, 或 x 可选标志
(?#...) 注释.
(?= re) 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
(?! re) 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功
(?> re) 匹配的独立模式,省去回溯。
w 匹配字母数字
W 匹配非字母数字
s 匹配任意空白字符,等价于 [
f].
S 匹配任意非空字符
d 匹配任意数字,等价于 [0-9].
D 匹配任意非数字
A 匹配字符串开始
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。c
z 匹配字符串结束
G 匹配最后匹配完成的位置。
匹配一个单词边界,也就是指单词和空格间的位置。例如, "er" 可以匹配"never" 中的 "er",但不能匹配 "verb" 中的 "er"。
B 匹配非单词边界。"erB" 能匹配 "verb" 中的 "er",但不能匹配 "never" 中的 "er"。
, , 等. 匹配一个换行符。匹配一个制表符。等
1...9 匹配第n个分组的子表达式。
10 匹配第n个分组的子表达式,如果它经匹配。否则指的是八进制字符码的表达式。
以上就是对python正则表达式基础语法及re模块的详解内容,希望能帮助到大家。
abc ↩
... ↩
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37835.html
摘要:反斜杠的困扰与大多数编程语言相同,正则表达式里使用作为转义字符,这就可能造成反斜杠困扰。文本中正则表达式结束搜索的索引。以元组形式返回全部分组截获的字符串。用于指定最大分割次数,不指定将全部分割。 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法...
摘要:准备工作初探,这个文章属于自己的一个总结。所以教程面向新手,无技术含量。凡是报错信息看到,就是表示缩进不一致。注由于原网址不方便公布,代码中的网址全部替换为了。 准备工作 初探python,这个文章属于自己的一个总结。所以教程面向新手,无技术含量。python环境Linux基本都有,Windows下官网也提供了便利的安装包,怎么安装配置网上有很多教程在此就不一一说明。我使用的pytho...
摘要:标记一个子表达式的开始和结束位置。用和进行搜索和替换二者几乎是一样的,都是将某字符串中所有匹配正则表达式模式的部分进行替换。 【未完成初稿】这周在工作中遇到很多需要从一段字符中增删查改的工作,第一遍用自己写的脚本去做,结果是可重用性不高,而且效率也不太好。其中也用到了python中的正则表达式部分re,后来就想能不能将我遇到的这类问题全部用正则去解决,具体就是python的re模块。答...
摘要:今天来给大家分享一份关于比较详细的正则表达式宝典,学会之后你将对正则表达式达到精通的状态。正则表达式是用在方法当中,大多数的字符串检索都可以通过来完成。导入模块在使用正则表达式之前,需要导入模块。 ...
摘要:今天就专门看看正则表达式。下面是一个正则表达式最简单的使用例子。这个例子使用了正则表达式模块的函数,它会返回所有符合模式的列表。查询标志让正则表达式具有不同的行为。,按给定正则表达式分割字符串。,正则表达式中捕获组的数量。 最近研究Python爬虫,很多地方用到了正则表达式,但是没好好研究,每次都得现查文档。今天就专门看看Python正则表达式。本文参考了官方文档 re模块。 模式 首...
阅读 2178·2021-09-30 09:47
阅读 917·2021-08-27 13:01
阅读 2891·2019-08-30 15:54
阅读 3657·2019-08-30 15:53
阅读 808·2019-08-29 14:07
阅读 692·2019-08-28 18:16
阅读 777·2019-08-26 18:37
阅读 1384·2019-08-26 13:27