归纳整理Python正则表达式知识点

Python正则表达式知识点

正则表达式是由一些特殊字符和普通字符组合而成的模式,用于匹配字符串。在Python中,我们可以使用re模块来处理正则表达式。本文将从以下几个方面介绍Python正则表达式的知识点。

1. 正则表达式的基本语法

正则表达式由普通字符和特殊字符组成。普通字符表示它们本身,特殊字符则具有特殊的含义。

1.1 普通字符

普通字符就是表示它们本身的字符,例如数字、字母、空格、标点符号等等。在正则表达式中,普通字符只表示它们本身,不具有任何特殊含义。

下面是一个匹配手机号码的正则表达式:

import re

pattern = '\d{11}' # 匹配11位数字

text = '我的电话号码是13912345678'

result = re.findall(pattern, text)

print(result) # ['13912345678']

在这个例子中,我们通过使用普通字符\d来表示数字,使用字符{11}来表示11次匹配,从而得到了一个匹配手机号码的正则表达式。

1.2 特殊字符

特殊字符在正则表达式中具有特殊的含义。下面是几个常用的特殊字符:

- .:匹配任意一个字符,除了换行符\n;

- ^:匹配字符串的开头;

- $:匹配字符串的结尾;

- *:匹配前面的字符重复出现 0 次或者多次;

- +:匹配前面的字符重复出现 1 次或者多次;

- ?:匹配前面的字符重复出现 0 次或者 1 次;

- \:转义字符,用于匹配特殊字符本身。

下面是一个匹配邮箱的正则表达式:

import re

pattern = '\w+@[0-9a-z]+\.[a-z]{2,3}'

text = '我的邮箱是abc123@qq.com'

result = re.findall(pattern, text)

print(result) # ['abc123@qq.com']

在这个例子中,我们使用特殊字符\w来匹配单词字符(包括数字和字母),使用特殊字符+来表示重复出现 1 次或者多次,使用特殊字符@来匹配邮箱中的@符号,使用特殊字符[0-9a-z]来匹配数字和字母,使用特殊字符\.来匹配邮箱中的.符号,使用特殊字符{2,3}指定匹配2到3次的小写字母,从而得到了一个匹配邮箱的正则表达式。

2. re模块常用函数

在Python中,我们可以使用re模块来处理正则表达式。下面是re模块常用的函数。

2.1 re.findall()

re.findall()函数可以用来找出所有符合正则表达式的字符串。它的返回值是一个列表。

下面是一个使用re.findall()函数的例子:

import re

pattern = '\d+'

text = 'abc 123 def 456'

result = re.findall(pattern, text)

print(result) # ['123', '456']

在这个例子中,我们使用正则表达式\d+来匹配数字,使用re.findall()函数来找出字符串中所有的数字。

2.2 re.search()

re.search()函数可以用来找出第一个符合正则表达式的字符串。它的返回值是一个match对象,包含了匹配结果的相关信息。

下面是一个使用re.search()函数的例子:

import re

pattern = 'hello'

text = 'world hello'

result = re.search(pattern, text)

print(result) #

print(result.group()) # hello

在这个例子中,我们使用字符串hello来匹配文本中的单词hello,并使用re.search()函数找出第一个匹配结果。

2.3 re.sub()

re.sub()函数可以用来替换符合正则表达式的字符串。它的返回值是替换后的字符串。

下面是一个使用re.sub()函数的例子:

import re

pattern = 'world'

text = 'hello world'

new_text = re.sub(pattern, 'Python', text)

print(new_text) # hello Python

在这个例子中,我们使用字符串world来匹配文本中的单词world,并使用re.sub()函数将其替换为Python。

3. 正则表达式的高级应用

在正则表达式的高级应用中,我们会介绍一些可以更加灵活使用正则表达式的技巧。

3.1 使用分组

正则表达式中的分组要用小括号()来表示。使用分组可以让我们更加灵活地进行匹配和替换。

下面是一个使用分组的例子:

import re

pattern = '(\d{3})-(\d{4}-\d{4})'

text = '我的电话号码是010-1234-5678'

result = re.findall(pattern, text)

print(result) # [('010', '1234-5678')]

在这个例子中,我们使用分组来匹配电话号码。其中第一个小括号表示区号,第二个小括号表示电话号码,使用-符号分隔。使用re.findall()函数来找到所有符合正则表达式的字符串,返回值是一个元组类型的列表。可以通过下标来访问每个分组的结果。

3.2 使用元字符

元字符是可以帮助我们更加灵活地使用正则表达式的特殊字符。

下面是一些常用的元字符:

- \d:匹配数字,相当于[0-9];

- \D:匹配非数字,相当于[^0-9];

- \s:匹配空白字符,包括空格、制表符、换行符等;

- \S:匹配非空白字符;

- \w:匹配单词字符,相当于[a-zA-Z0-9_];

- \W:匹配非单词字符,相当于[^a-zA-Z0-9_]。

下面是一个使用元字符的例子:

import re

pattern = '\d+\.\d+'

text = '3.14'

result = re.match(pattern, text)

print(result) #

在这个例子中,我们使用元字符+来匹配前面的\d重复出现 1 次或者多次,使用元字符\.来匹配小数点,得到了一个能够匹配小数的正则表达式。

4. 小结

本文介绍了Python正则表达式基本语法、re模块常用函数以及正则表达式的高级应用。正则表达式可以帮助我们更加灵活地处理字符串,是Python程序开发中不可缺少的技能。

后端开发标签