Python 正则表达模块详解

1. 正则表达式概述

正则表达式是一种对字符串进行匹配的工具,可以用来查找、替换、分割字符串等操作。在 Python 中,使用 re 模块来操作正则表达式。

正则表达式的特点:

1.灵活、规则性强

2.通用性强

3.语法较为复杂

在接下来的内容中,我们将会详细介绍 Python 中的正则表达式模块 re 的使用方法和语法规则。

2. re 模块函数介绍

2.1 re.match()函数

re.match()函数用于尝试从字符串的起始位置匹配一个模式。如果匹配成功返回一个匹配对象,否则返回 None。

语法:

re.match(pattern, string, flags=0)

其中:

pattern:表示正则表达式

string:表示要匹配的字符串

flags:可以指定匹配模式

示例:

import re

result = re.match('Hello', 'Hello, world!')

print(result.group()) # 输出:Hello

2.2 re.search()函数

re.search()函数用于在字符串中查找匹配项,如果匹配成功返回一个匹配对象,否则返回 None。

语法:

re.search(pattern, string, flags=0)

示例:

import re

result = re.search('world', 'Hello, world!')

print(result.group()) # 输出:world

2.3 re.findall()函数

re.findall()函数用于查找字符串中所有符合正则表达式的字符串,并返回一个列表。

语法:

re.findall(pattern, string, flags=0)

示例:

import re

result = re.findall('l', 'Hello, world!')

print(result) # 输出:['l', 'l', 'l']

2.4 re.sub()函数

re.sub()函数用于替换字符串中符合正则表达式的部分。

语法:

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

示例:

import re

result = re.sub('\d+', 'number', '123abc456def')

print(result) # 输出:numberabcnumberdef

3. 正则表达式语法规则

3.1 字符组

字符组是指由一组字符组成的集合,在正则表达式中使用方括号 [] 表示。

示例:

import re

result = re.findall('[aeiou]', 'Hello, world!')

print(result) # 输出:['e', 'o', 'o']

3.2 重复符号

重复符号用于表示某个字符的重复出现次数,常见的有 *、+、?、{m}、{m,n}。

*:表示重复零次或多次

+:表示重复一次或多次

?:表示重复零次或一次

{m}:表示重复 m 次

{m,n}:表示重复 m 到 n 次

示例:

import re

result = re.findall('o*', 'Hello, world!')

print(result) # 输出:['', '', 'o', '', '', '', 'o', '', '', '', '', '', '']

3.3 转义字符

转义字符用于表示正则表达式中的特殊符号,常见的有 \d、\w、\s,或者用反斜杠来转义特殊字符。

示例:

import re

result = re.findall('\d+', '123abc456def')

print(result) # 输出:['123', '456']

4. 正则表达式实例

4.1 匹配手机号码

import re

phone = '18812345678'

if re.match(r'^1[3456789]\d{9}$', phone):

print('合法手机号码')

else:

print('非法手机号码')

4.2 匹配邮箱

import re

email = 'example@domain.com'

if re.match(r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', email):

print('合法邮箱地址')

else:

print('非法邮箱地址')

4.3 提取网页中的链接

import re

html = '''

Example 1

Example 2

Example 3

'''

links = re.findall(r'href=[\'"]?([^\'" >]+)', html)

print(links)

5. 总结

本文详细介绍了 Python 中的正则表达式模块 re 的使用方法和语法规则,通过实例的方式展示了正则表达式的应用。正则表达式是一个非常强大的工具,对于字符串的处理和提取非常方便。

后端开发标签