正则表达式re(python)

python的re

元字符metacharacter
. 除换行符外的任意一个字符
[abcd] 集合里的任意一个字符
[^abcd]除集合里的字符的任意一个字符
[a-z] 字符范围,范围内的任意一个字符
\b 单词的边界 例:\ba在文本中找到以a开头的字符,a\b以a结尾的字符
\B 不匹配单词的边界 例:t\B包含t不以t结尾的字符,\Bt含有t不以t开头的字符
\d 任意一位0-9的数字
\D 一位非数字
\s 一位空白字符,包括换行符、制表符、空格
\S 一位非空白字符
\w 匹配[a-zA-Z0-9],包括中文
\W 匹配\w之外的字符
重复
* 重复0次或多次
+ 重复至少一次
?重复0次或1次
{n} 重复n次
{n,} 重复至少n次
{n,m} 重复n-m次

x|y 匹配x或者y
(pattern) 分组,分配组号,从1开始
(?:pattern) 去掉分组,只为改变优先级
(?<name>exp) 给分组命名
零宽断言
(?=exp) 断言exp一定在匹配的右边出现
(?<=exp) 断言exp一定在匹配的左边出现
(?!exp) 断言exp一定不在匹配的右边出现
(?<!exp) 断言exp一定不在匹配的左边出现
断言不占分组号

贪婪和非贪婪
默认是贪婪模式,尽可能多的取
*?匹配任意次,尽可能少重复
+?匹配至少1次,尽可能少重复
?? 匹配0次或1次,尽可能少重复
{n,}? 匹配至少n次,尽可能少重复
{n,m}? 匹配至少n次,至多m次,尽可能少重复

单行模式和多行模式
单行模式:.可以匹配所有字符,包括换行符。
^表示整个字符串的开头,$整个字符串的结尾
多行模式:.不包括换行符
^表示行首,$表示行位

 

python的RE
使用re模块(import re)
re.M多行模式,re.S单行模式,re.I忽略大小写
编译:re.compile(pattern,flags=0)
regex=re.compile(pattern,flags=0)
单词匹配
re.match(pattern,string,flags=0)
regex.match(string,[2,4])
匹配从字符串的开头匹配,regex可以重新设定开始和结束位置,返回match对象

re.search(pattern,string,flags=0)
regex.search(string,[2,4])
从头搜索直到第一个匹配,regex可以重新设定开始和结束位置,返回match对象
re.fullnmath(pattern,string,flags=0)
regex.fullmatch(string,[2,4])
整个字符串和正则表达式匹配

全部匹配
re.findall(pattern,string,flags=0)
regex.findall(string,[2,4])
整个字符串,从左至右匹配,返回所有匹配项的列表
re.finditer(pattern,string,flags=0)
regex.finditer(string,[2,4])
整个字符串,从左至右匹配,返回所有匹配项,返回迭代器
每次迭代返回的是match对象

匹配替换
re.sub(pattern,replacement,string,count=0,flags=0)
regex.sub(replacement,string,count=0)
使用pattern对字符串string进行匹配,对匹配项使用replacement替换,
replacement可以是string,bytes,function。

re.subn(pattern,replacement,string,count=0,flags=0)
regex.subn(replacement,string,count=0)
同sub 返回一个元组(new_string,number_of_subs_made)

分割字符串
re.split(pattern,string,maxsplit=0,flags=0)

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88245

(0)
10590628461059062846
上一篇 2017-11-06 19:37
下一篇 2017-11-07 09:33

相关推荐

  • systemd和systemctl

    systemd和systemctl(centos7)     Systemd是一种新的linux系统服务管理器。它替换了init系统,能够管理系统启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在centos7系统中,PID 1被systemd所使用了:如下,在centos6中: init─┬─NetworkManager &nb…

    Linux干货 2016-10-09
  • 1017练习题

    1017练习题 作业 10月17日 柴震 1.生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 hwclock 查看硬件是否准确,如准确无误,可以使用hwclock -s以硬件时间为准。 或者使用ntpdate命令指定一台NTP服务器,进行同步。 2.生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在…

    Linux干货 2016-10-18
  • 第一周学习总结

    俗话说,好记性不如烂笔头,在当今移动互联网横行的时代,烂笔头就是网络,而笔记本就是各种平台。 作为一个IT人,有人突然问你计算机是啥,你可能不会像学文科的人一样给他说,就是电脑啊。这时候就是凸显IT知识技能的时候了,那么我下面就给您慢慢的道来。 在1946年美籍匈牙利人冯·诺依曼首次提出了自己的计算机体系理论,简称冯·诺依曼体系,主要是说计算机由五大基本部件…

    2017-12-14
  • 怎么解决VMware“该虚拟机似乎正在使用中”问题

    1)故障现象:  最近使用vmware workstation测试资料,经常会出现打开虚拟机的时候提示:“该虚拟机正在被使用”,点击“获取所有权”或者“取消”都不能处理问题(一般是没有正常虚拟机导致的)。 2)处理方法: a.查找*.lck文件,然后删除。 b.重启vmware workstation服务 3)参考资料 http://jingyan…

    Linux干货 2016-07-29
  • CentOS上配置https服务

    在CentOS6.9(http2.2)配置https   创建前准备:       安装opensssl包  和 http2.2 1、在主机(192.168.109.100)创建私有CA   (1)获取私钥       …

    2017-06-04
  • ansible的用法

    ansible 每台主机拥有不同的功能,可能同时是http服务器,php-fpm的客户端,共享存储的客户端等,这些功能是单独定义的,不同主机需要的功能各不相同 应确保目标主机的状态为事先给他定义的目标状态 使目标主机达到目标状态有两种方法      agentless:由服务端主机通过ssh连接到目标主机执行命令,客户端不需要额…

    Linux干货 2016-11-11