正则表达式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

相关推荐

  • rpm软件包管理

    软件包管理 软件运行环境 API   应用程序开发接口 ABI   二进制接口 Rpm包命名方式 Name-version-release-arch-rpm 例如 zziplib-devel-0.13.162-5.el7.i686.rpm zziplib :主包名 dewel:次包名 0.13.162: 主版…

    Linux干货 2016-08-24
  • btrfs管理及应用

    一. 简介     btrfs有着强大的功能,它支持在多个及各种物理设备(包括RAID)上创建一个文件系统,并支持动态扩展或减小,支持快照功能,甚至快照的快照,支持子卷功能。 二. 如何使用btrfs文件系统?     我的准备材料:3块20G的硬盘 [root@localhost ~]#…

    Linux干货 2015-12-07
  • 一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/226194    前面用了12个小节对DNS的基础、以及Windows的DNS系统作了较详细的描述,下面的几节主要是说一些有关DNS应用方面…

    2015-03-18
  • N27_第一周作业

    一、描述计算机的组成及其功能 计算机由CPU、内存、输入设备和输出设备组成。 CPU:运算器、控制器、寄存器、缓存 *运算器:进行数字运算和逻辑运算。 *控制器: A、从内存中取出一条指令,并指出下一条指令在内存中的位置; B、对指令进行译码或测试,并产生相应的操作控制信号; C、控制并控制CPU、内存和输入/输出设备之间数据流动的方向。 *寄存器:暂存指令…

    Linux干货 2017-09-04
  • Linux基础目录名称及功用

    FHS目录规则 Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   FHS定义了两层规范,第一层是,…

    Linux干货 2016-10-30
  • 为什么中国的网页设计那么烂?

    Nick Johnson,一个有12年经验的Web设计师在它的blog里写下了“Why is Chinese Web Design So Bad”,新浪,人人,百度,阿里巴巴,腾讯榜上有名。其中的观点相当的好,希望所有的中国人都读一下。我不全文翻译了,只是给大家看一些摘要。(保证不会像《环球时报》一样) —————————— 作者2005年的夏天来到中国,他…

    Linux干货 2016-07-11