使用Python模块:re模块

re是regular expression(简称regex)的头两个字母,是正则表达式的意思


正则表达式介绍

基本概念

正则表达式为高级的文本模式匹配,抽取、与/或文本形式的搜索和替换功能提供了基础;简单的说,正则表达式是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于是正则表达式能按照某种模式匹配一系列有相似特征的字符串

模式匹配:搜索和匹配

搜索(searching)和匹配(matching)是正则表达式里两个重要的概念

在Python术语中,有两种方法完成模式匹配(pattern-matching):
1)搜索:在字符串的任意部分搜索匹配的模式,在Python中通过search()函数或方法实现
2)匹配:判断一个字符能否从起始位处全部或者部分的匹配某个模式,在Python中通过match()函数或方法实现

总之,当涉及模式时,全部使用术语『模式匹配』(简称『匹配』),我们按照Python如何完成匹配的方式来区分『搜索』和『匹配』

元字符:正则表达式的灵魂

元字符(metacharacter)是正则表达式王国中的一群有着特殊含义的符号或字符,正是它们赋予了正则表达式强大的功能和灵活性

特殊符号

1)literal:匹配文本字符串的字面值literal

foo

2)re1|re2:匹配正则表达re1或re2

foo1|foo2

3).:匹配任何字符(除了\n之外)

b.b

4)^:匹配字符串起始部分

^Dear

5)$:匹配字符串终止部分

/bin/*sh$

6)*:匹配0次或多次前面出现的正则表达式

[A-Za-z0-9]*

7)+:匹配1次或多次前面出现的正则表达式

[a-z]+\.com

8)?:匹配0次或1次前面出现的正则表达式

goo?

9){N}:匹配N次前面出现的正则表达式

[0-9]{3}

10){M,N}:匹配M~N次前面出现的正则表达式

[0-9]{5,9}

11)[...]:匹配来自字符集的任意单一字符

[aeiou]

12)[..x-y..]:匹配x~y范围的任意单一字符

[0-9],[A-Za-z]

13)[^...]:不匹配此字符集中出现的任意单一字符,但包括某一范围的字符(如果在此字符集中出现)

[^aeiou],[^A-Za-z0-9]

14)(*|+|?|{})?:用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{})

.*[a-z]

15)(...):匹配封闭的正则表达式,然后另存为子组

([0-9]{3})?,f(oo|u)bar

特殊字符

1)\d:匹配任何十进制数字,与[0-9]一致

2)\w:匹配任何字母数字字符,与[A-Za-z0-9]一致

3)\s:匹配任何空格字符,与[\n\t\r\v\f]一致

4)\b:匹配任何单词边界

5)|N:匹配已保存的子组N

6)\c:逐字匹配任何特殊字符c(即按照字面意思匹配,不匹配特殊含义)

7)\A(\Z):匹配字符串的起始(结束),参考^和$

扩展表示法

1)(?iLmsux):在正则表达式中嵌入一个或多个特殊标记参数(或者通过函数方法)

2)`(?:...):表示一个匹配不用保存的分组

3)(?P...):像一个仅由name标识而不是数字ID表示的正则分组

4)(?P=name):在同一字符串中匹配由(?P< name >)分组的之前文本

5)(?#...):表示注释,所有内容都被忽略

6)(?=...):匹配条件是如果…出现在之后的位置,而不使用输入字符串:称作正向前视断言

7)(?!...):匹配条件是如果…不出现在之后的位置,而不使用输入字符串:称作负向前视断言

8)(?<=...):匹配条件是如果…出现在之前的位置,而不使用输入字符串:称作正向后视断言

9)(?:匹配条件是如果…出现在之前的位置,而不使用输入字符串:称作负向后视断言

10)(?(id/name)Y|N):如果分组所提供的id或者name(名称存在),就返回正则表达式的条件匹配Y,如果不存在,就返回N:|N是可选项


re模块

使用re模块前先要导入该模块

>>> import re


re.compile(pattern)

re.compile(pattern)函数用来创建一个模式对象

这里写图片描述

re.search(pattern, string)

re.search(pattern, string)函数用来在字整个符串中寻找模式

使用Python模块:re模块_第1张图片

pattern_obj.search(string)是它的等价写法

使用Python模块:re模块_第2张图片

re.match(pattern, string)

re.match(pattern, string)函数用来在字符串开始位置匹配模式

使用Python模块:re模块_第3张图片

pattern_obj.match(string)是它的等价写法

使用Python模块:re模块_第4张图片

re.split(pattern, string)

re.split(pattern, string)函数根据模式分割字符串,返回列表

使用Python模块:re模块_第5张图片

pattern_obj.aplit(string)是它的等价写法

使用Python模块:re模块_第6张图片

re.findall(pattern, string)

re.findall(pattern, string)函数以列表形式返回匹配项

使用Python模块:re模块_第7张图片

pattern_obj.findall(string)是它的等价写法

使用Python模块:re模块_第8张图片

re.sub(pattern, repl, string, count=0, flags=0)

re.sub(pattern, repl, string, count=0, flags=0)函数利用正则表达式实现字符串的替换

参数解释:patten:匹配模式,repl:被替换字符串,string:待处理字符串(包含repl),count:限定替换次数(默认替换所有),flags:匹配模式

使用Python模块:re模块_第9张图片

pattern_obj.sub(repl, string)是它的等价写法

使用Python模块:re模块_第10张图片

你可能感兴趣的:(Python,语言)