正则表达式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)
上一篇 2017-11-06 19:37
下一篇 2017-11-07 09:33

相关推荐

  • 部分基本的文本处理工具

    一、   抽取文本的命令     1、cat     cat [option]… [file]…     常用选项:         -E &nb…

    Linux干货 2016-08-05
  • Centos不重启添加新硬盘

     显示当前磁盘分区: [root@centos7 ~]# fdisk -l</p>< p>    Disk /dev/sda: 32.2 GB, 32212254720 bytes, 6…

    Linux干货 2016-03-27
  • NET25-第7周作业

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@node1 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI o…

    Linux干货 2017-03-15
  • 基于虚拟用户控制的ftp服务

    FTP作为最常见的文件共享服务,可提供文件的上传,下载等服务;其用户可分为三类: 匿名用户:即不需要用户账号与密码即可登录FTP服务器,此时登录用户将会被映射为系统上的ftp用户。 系统用户:即用FTP服务器上的用户账号与密码登录FTP服务器。此种方法虽然在一定程度上对登录做出了限制,但由于系统账号的相关权限,则增大了FTP服务器的系统风险; 虚拟用户:用户…

    Linux干货 2016-10-23
  • 8月20日软件包管理

    软件包管理 本章内容 软件运行环境 软件包基础 Rpm包管理 yum管理 定制yum仓库 编译安装 软件运行环境 API:Application Programming Interface     POSIX:Portable OS 程序源代码–>预处理–>编译–>…

    Linux干货 2016-08-21
  • linux中进程及内存管理工具

    pstree 显示进程树 ({}是线程) 选项-p #显示进程编号 pstree username #查看指定用户的进程 centos7中可以使用选项-s来查看指定进程的父子进程   ps (默认显示当前终端运行的进程) 支持三种选项: 1、UNIX选项 -C cmdlist 指定命令(允许同时指定多个命令) -L 显示线程 -e: 显示所有进程,…

    Linux干货 2017-12-17