Python:正则表达式
来源:互联网 发布:linux安装vncviewer 编辑:程序博客网 时间:2024/05/16 16:10
正则表达式中:
①直接给出字符,精确匹配
\d 匹配一个数字
\w 匹配一个字母或数字
_ ._ 可以匹配任意字符
如: ‘\d\d\d’可匹配 ‘110’
‘\w\w\d’可匹配 ‘py2’
‘\py.’ 可匹配 ‘pyc’ ‘py1’ 等
②匹配变长的字符
* 任意个字符(包括0个)
+ 表示至少一个字符
? 表示0个或1个字符
{n} 表示n个字符
{n,m} 表示n到m个字符
例:
\d{3}\s+\d{3,8}
1、\d{3} 表示匹配三个数字,例如 ‘110’
2、\s 可以匹配一个空格(也包括Tab等空白符),\s+ 表示至少有一个空格,例如匹配 ’ ‘,’ ’
3、\d{3,8} 表示3到8个数字 例如 ‘1234567’
进阶
要做更精确的匹配,可用[] 表示范围:
· [0-9a-zA-Z_] 可以匹配一个数字、字母或者下划线;
· [0-9a-zA-Z_]+ 可以匹配至少由一个数字,字母或者下划线组成的字符串,比如 ‘a000’,’py_’等
· [a-zA-Z_][0-9a-zA-Z_]* 可以匹配字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是python的合法变量
· [a-zA-Z_][0-9a-zA-Z_]{0,19} 更精确的限制了变量长度是1-20个字符(前面1个字符+后面最多19个字符)
A|B 可以匹配A或B,所以(P|p)ython可以匹配’Python’ 或 ‘python’
^ 表示行的开头 ^\d 表示必须以数字开头
$ 表示行的结束 放在最末尾表示必须以……..结束
注意:类似 ‘py’ 可以匹配‘python’但加上 ^py$ 就变成了整行匹配,就只能匹配’py’了
\A 与^在默认情况下意义相同,表示输入字符串的开始位置
\B 与$ 在默认情况下意义相同,表示输入字符串的结束位置
re模块
使用正则表达式,首先导入python提供的re模块
impot re
判断匹配时,使用Python的 r 前缀
s=r'123\_aaa'
用match方法判断是否匹配成功,成功则返回一个match对象,否则返回None,常见的判断方法是:
test='输入的字符串'if re.match(r'正则表达式',test): print 'ok'else: print 'failed'
切分字符串
使用 split()函数,语法:split(r’正则表达式’,’字符串’)
正则表达式中是切分字符串的分段点,函数返回一个list
import reprint re.split(r'[\s\,]+','a,b, ,c, , d')['a', 'b', 'c', 'd']
分组
使用 group()函数分组,即是提取子串。用() 表示要提取的分组
test='010-1234567'if re.match(r'\d{3}\-\d{3,8}$',test): print 'ok'else: print 'no'm=re.match(r'^(\d{3})\-(\d{3,8})',test)print m.group(0)print m.group(1)print m.group(2)
注意:group(0) 永远是原始字符串,group(1)、group(2)….分别表示按括号顺序表示的子串。
贪婪匹配
正则表达式默认是贪婪匹配,也就是匹配尽可能多的字符。
例如:
print re.match(r'^(\d+)(0*)$','10023000').groups()('10023000', '')
可见\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串
让\d+采用非贪婪匹配,才能把后面的0匹配出来,在其后加?可让\d+采非贪婪匹配
print re.match(r'^(\d+?)(0*)$','10023000').groups()('10023', '000')
编译
如果需要重复的使用某个正则表达式,那么你可以先将该正则表达式编译成模式对象。
我们使用re.compile()方法编译。
以下为编译标志:
- python正则表达式学习
- c++正则表达式,python
- Python正则表达式(一)
- python的正则表达式
- Python正则表达式
- Python初学-正则表达式
- 正则表达式与python
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式
- Python - 正则表达式
- Python正则表达式
- python正则表达式
- Python正则表达式指南
- Python正则表达式指南
- Python 正则表达式指南
- python 正则表达式
- NYOJ 28 大数阶乘
- 一天突破25万台 vivo X7 1600万柔光自拍获消费者认可
- 比特币每日新增量减半,奖励缩水但价格疯涨?
- Spring-boot application controller 方法自动解析Locale参数原理
- 自由崛起,定义未来 ——2016上海创新生活方式峰会
- Python:正则表达式
- 麻雀虽小五脏俱全 vivo X7音频播放测评
- 基于360虚拟防火墙实现neutron三层网络功能
- [Git报道.3]创建本地版本库(msysGit)
- css布局小技巧
- 这家初创公司足以叫板谷歌无人驾驶技术,创始人是个真女神
- 预告:如何用大数据做威胁情报 | 硬创公开课
- js事件
- VMware CentOS 7 NAT方式连接网络配置