Python-正则表达式

正则表达式特殊符号和字符

符号 含义
literal 匹配文本字符串的字面值 literal
re1|re2 匹配正则表达式 re1 或者 re2
. 匹配任何字符(除了\n 之外)
^ 匹配字符串开始部分
$ 匹配字符串终止部分
* 匹配 0 次或者多次前面出现的正则表达式
+ 匹配 1 次或者多次前面出现的正则表达式
? 匹配 0 次或者 1 次前面出现的正则表达式
{N} 匹配 N 次前面出现的正则表达式
{M,N} 匹配 M~N 次前面出现的正则表达式
[…] 匹配来自字符集的任意单一字符
[..x−y..] 匹配 x ~ y 范围中的任意单一字符
[^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现)
 (*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本
(…) 匹配封闭的正则表达式,然后另存为子组
特殊字符
\d 匹配任何十进制数字,与[0-9]一致(\D与\d相反,不匹配任何非数值型的数字)
\w 匹配任何字母数字字符,与[A-Za-z0-9]相同(\W与之相反)
\s 匹配任何空格字符,与[\n\t\r\v\f]相同(\S与之相反)
\b 匹配任何单词便捷(\B与之相反)

举例

符号 匹配的字符串
bat | bet | bit bat、bet、bit
f.o 匹配在字母“f”和“o”之间的任意一个字符;例如 fao、f9o、f#o 等
\bthe 任何以 the 开始的字符串
\bthe\b 仅仅匹配单词 the
[cr][23][dp][o2] 一个包含四个字符的字符串,第一个字符是“c”或“r”,然后是“2”或“3”,后面 是“d”或“p”,最后要么是“o”要么是“2”。例如,c2do、r3p2、r2d2、c3po等
[^aeiou] 一个非元音字符
[dn]ot? 字母“d”或者“n”,后面跟着一个“o”,然后是最多一个“t”,例如,do、no、dot、not
]+> 匹配全部有效的(和无效的)HTML 标签
\w+@\w+\.com [email protected] 格式表示的简单电子邮件地址
\w+-\d+ 一个由字母数字组成的字符串和一串由一个连字符分隔的数字

Python  re模块

  • match()

re.mach从字符串的起始匹配,如果起始位置匹配不成功,则返回none

Python-正则表达式_第1张图片

  • search()

扫描整个字符串并返回第一个成功的匹配

Python-正则表达式_第2张图片

  •  group()和 groups()

group()要么返回整个匹配对象,要么根据要求返回特定子组。groups()则仅返回一个包含 唯一或者全部子组的元组

Python-正则表达式_第3张图片

  •  findall()

findall()查询字符串中某个正则表达式模式全部的非重复出现情况。这与 search()在执行 字符串搜索时类似,但与 match()和 search()的不同之处在于,findall()总是返回一个列表。如 果 findall()没有找到匹配的部分,就返回一个空列表,但如果匹配成功,列表将包含所有成 功的匹配部分(从左向右按出现顺序排列)。

  • finditer()

finditer()函数是在 Python 2.2 版本中添加回来的,这是一个与 findall()函数类似但是更节 省内存的变体。两者之间以及和其他变体函数之间的差异(很明显不同于返回的是一个迭代 器还是列表)在于,和返回的匹配字符串相比,finditer()在匹配对象中迭代。如下是在单个 字符串中两个不同分组之间的差别。

Python-正则表达式_第4张图片

AttributeError: 'callable_iterator' object has no attribute 'next'-------版本问题

Python-正则表达式_第5张图片 

  • compile()

编译正则表达式

Python-正则表达式_第6张图片

  • sub()和 subn()

两者几乎一样,都是将某字 符串中所有匹配正则表达式的部分进行某种形式的替换。用来替换的部分通常是一个字符串, 但它也可能是一个函数,该函数返回一个用来替换的字符串。subn()和 sub()一样,但 subn() 还返回一个表示替换的总数,替换后的字符串和表示替换总数的数字一起作为一个拥有两个 元素的元组返回。

Python-正则表达式_第7张图片

  • split()

re 模块和正则表达式的对象方法 split()对于相对应字符串的工作方式是类似的,但是与分割一个固定字符串相比,它们基于正则表达式的模式分隔字符串,为字符串分隔功能添加 一些额外的威力。如果你不想为每次模式的出现都分割字符串,就可以通过为 max 参数设定 一个值(非零)来指定最大分割数。 如果给定分隔符不是使用特殊符号来匹配多重模式的正则表达式,那么 re.split()与 str.split()的工作方式相同

你可能感兴趣的:(Python编程)