您的位置:

Python正则表达式入门指南

正则表达式是一种高级的文本处理工具,它可以通过一些特殊字符和语法规则匹配文本中的特定内容。Python自带的re模块提供了完善的正则表达式功能,允许我们在Python程序中使用正则表达式进行文本处理。

一、为什么要学习正则表达式?

正则表达式可以用于文本处理、数据抓取、信息提取等多方面的应用,是Python编程中不可或缺的一部分。在大规模文本处理场景下,使用正则表达式可以大大提高处理效率。

例如,在字符串中查找所有以数字开头的单词:

import re

text = '2019 was a great year, but 2020 will be even better!'

result = re.findall(r'\d+\w+', text)

print(result)
# ['2019', '2020']

在上述代码中,使用re.findall()函数查找匹配模式的所有结果,并以列表形式返回。

二、基本正则表达式语法

1. 字符匹配

正则表达式中的字符匹配可以使用普通字符、转义字符和字符集三种方式。

普通字符匹配:

  • 匹配一个特定的字符
  • 示例:匹配名字中的首字母
import re

text = 'Alan Turing is the father of computer science.'

result = re.findall(r'A\w+', text)

print(result)
# ['Alan']

转义字符匹配:

  • 匹配具有特殊意义的字符
  • 示例:匹配注释中的特殊字符
import re

text = '/* This is a comment */'

result = re.findall(r'\*.*?\*', text)

print(result)
# ['/* This is a comment */']

字符集匹配:

  • 匹配一组特定的字符
  • 示例:匹配所有元音字母
import re

text = 'The quick brown fox jumps over the lazy dog.'

result = re.findall(r'[aeiouAEIOU]', text)

print(result)
# ['e', 'u', 'i', 'o', 'u', 'o', 'e', 'o', 'e', 'a', 'o']

2. 重复匹配

重复匹配指匹配重复出现的字符或字符集。可以使用通配符、限定符和分组三种方式进行重复匹配。

通配符匹配:

  • 匹配任意单个字符
  • 示例:匹配所有以at结尾的单词
import re

text = 'The cat in the hat sat on the mat.'

result = re.findall(r'\w+at\b', text)

print(result)
# ['cat', 'hat', 'sat', 'mat']

限定符匹配:

  • 匹配出现次数、范围或者特定位置的字符
  • 示例:匹配手机号码
import re

text = '我的手机号码是:136****7890。'

result = re.findall(r'1[3456789]\d{9}', text)

print(result)
# ['136****7890']

分组匹配:

  • 将多个字符合并成一个整体,用于重复匹配
  • 示例:匹配多个连续的数字
import re

text = 'The answer is 42.'

result = re.findall(r'(\d+)', text)

print(result)
# ['42']

三、实际应用案例

正则表达式广泛应用于文本处理、数据清洗、信息提取等领域。以下是一些实际应用案例:

1. 匹配URL

import re

text = 'Visit my website at https://www.example.com.'

result = re.findall(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', text)

print(result)
# ['https://www.example.com']

2. 匹配电子邮件地址

import re

text = 'Please send your feedback to feedback@example.com.'

result = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)

print(result)
# ['feedback@example.com']

3. 提取HTML标签

import re

text = '

这是一篇介绍Python正则表达式的文章。