python核心编程笔记——正则表达式(一)

特殊符号和字符

. 即所谓的“元字符”,这些字符给予正则表达式强大的功能和灵活性。以下是常见的符号和字符:
在这里插入图片描述
在这里插入图片描述

使用择一匹配符号匹配多个正则表达式模式

. 表示择一匹配的符号是“|”,表示从多个模式中选一种的操作,用于分割不同的正则表达式。例如:正则表达式模式为:at|home,它匹配的字符串at或者home。

匹配任意单个字符

. 点号“.”用来匹配除了换行符\n以外的任何字符,无论字母、数字、空格、可打印字符、不可打印字符,还是一个符号,使用“.”都能匹配。例如:正则表达式模式为:f.o,可匹配的字符可以是:foo,f9o,f*o等。
  值得一提的是如何匹配点号本身呢?需要使用转义:“\.”。

从字符串起始或结尾或单词边界匹配

. 字符“^”或者特殊字符“\A”表示匹配以某单词为起始的字符串,字符“$”或者特殊字符“\Z”表示匹配以某单词作为结尾的字符串,例如:

正则表达式模式 匹配的字符串
^From 任何以From作为起始的字符串
From$ 任何以From作为结尾的字符串

. 特殊字符“\b”和“\B”可以用来匹配字符边界。两者的区别在于前者用于指定这个单词是作为字符串开头或结尾,后者只需要字符串包含指定的单词就行,例如:

正则表达式模式 匹配的字符串
\bthe 任何以the开始的字符串
\bthe\b 仅仅匹配the
\Bthe 任何包含the但不以the作为起始的字符串

创建字符集([])

. 有时希望匹配某些特定的字符串,就像是将匹配的范围进行更精确的缩小了,通过“[]”来做到这点:

正则表达式模式 匹配的字符串
b[aeiu]t bat、bet、bit、but
[ae][23][dp] 一个包含三个字符的字符串,第一个字符可能是a或e,第二个可能是2或3,第三个可能是d或p

限定范围与否定

. 除了单字符外,还可以匹配指定的字符范围,在方括号中通过“-”来实现操作,另外,如果左方括号后跟的是“^”,则表示不匹配括号中给定的字符,例如:

正则表达式模式 匹配的字符串
b[0-5] b0、b1、b2、b3、b4、b5
[^aeiou] 匹配非元音字符

使用闭包操作符实现存在性和频数匹配(*+?)

. 星号操作符“*”将用来匹配其左边的正则表达式出现零次或多次的情况(在计算机编程语言和编译原理中,该操作被称为Kleene闭包)。加号操作符“+”将匹配一次或多次出现的正则表达式(也叫做正闭包操作符)。问号操作符“?”将匹配出现一次或零次的正则表达式
  还有大括号操作符“{}”,中是一个或用逗号隔开的两个数值,表示前面的正则表达式出现的次数或出现的次数范围。
  值得注意的是如果问号操作符紧跟在任何使用闭合操作符的匹配后面,它将尽可能要求正则表达式引擎匹配尽可能少的次数。

正则表达式模式 匹配的字符串
[dn]ot? 表示t出现一次或零次,可能匹配do、no、dot、not
[0-9]{15,,17} 匹配15到17个数字
</?[^>]+> 匹配全部有效的(和无效的)HTML标签

表示字符集的特殊字符

. 与使用“0-9”这种形式相比较,可以简单的使用“d”表示匹配任何十进制数字。另一个特殊字符“\w”能够表示全部字母数字的字符集,相当于[A-Za-z0-9],“\s”可以用来表示空格字符,这些特殊字符的大写版本表示不匹配。例如:

正则表达式模式 匹配的字符串
\w+-\d+ 字符串和连字符和数字,例如:asda-1234
[A-Za-z]\w* 第一个字符是字母,其余字符(如果存在)是字母或数字
\w+@\w+.com 简单的电子邮件地址

使用圆括号指定分组

. 当时用正则表达式时,一对圆括号可以实现以下任意一个(或者两个)功能:
  1.对正则表达式进行分组;
  2.匹配子组。
  分组的一个原因是可能我想对整个表达式使用重复操作符(*+?)而不是单个字符;另一个原因很好的实例是:当有两个不同的正则表达式而且想用他们来比较同一个字符串时(这个原因没懂)。
  匹配子组的作用很大,比如之前所写的:\w+-\d+这个匹配模式,如果加上括号:(\w+)-(\d+),那么就能够分别访问第一部分的字符和第二部分的数字。

扩展表示法

. 它们都是以问号开始:“(?..)”,通常用于在判断之前提供标记,实现一个前视(或后视)匹配,或是条件检查。另外虽然使用了圆括号,但是只有(?P<name>)表述一个分组匹配,其余都不创建分组
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/rest_in_peace/article/details/85062797