Python 中的 re 模块是用来进行正则表达式匹配操作的工具,可以用来进行复杂的字符串搜索、替换和提取等操作。正则表达式是一种特殊的文本模式,用于描述字符串的模式。

常见的 re 模块使用方法

  1. 导入 re 模块import re
  2. 常用函数:
    • re.match()
      从字符串的起始位置开始匹配,如果起始位置不匹配,返回 Noneresult = re.match(r'abc', 'abcdef') print(result) # <re.Match object; span=(0, 3), match='abc'>
    • re.search()
      在整个字符串中搜索匹配的模式,如果找到,返回一个匹配对象,否则返回 Noneresult = re.search(r'abc', 'abcdef') print(result) # <re.Match object; span=(0, 3), match='abc'>
    • re.findall()
      返回一个列表,包含所有匹配正则表达式的子字符串。result = re.findall(r'\d+', '123abc456def') print(result) # ['123', '456']
    • re.finditer()
      返回一个迭代器,包含所有匹配正则表达式的匹配对象。result = re.finditer(r'\d+', '123abc456def') for match in result: print(match.group()) # 123, 456
    • re.sub()
      用于替换字符串中的匹配部分。result = re.sub(r'\d+', '#', 'abc123def456') print(result) # abc#def#
    • re.split()
      用正则表达式分割字符串。result = re.split(r'\d+', 'abc123def456') print(result) # ['abc', 'def', '']

正则表达式的常用语法:

  • . :匹配任意单个字符(除换行符外)。
  • ^ :匹配字符串的开头。
  • $ :匹配字符串的结尾。
  • * :匹配前面的表达式零次或多次。
  • + :匹配前面的表达式一次或多次。
  • ? :匹配前面的表达式零次或一次。
  • {n} :匹配前面的表达式恰好 n 次。
  • {n,} :匹配前面的表达式至少 n 次。
  • {n,m} :匹配前面的表达式至少 n 次,但不超过 m 次。
  • [] :匹配字符集中的任意一个字符(如 [abc] 匹配 ‘a’, ‘b’, ‘c’)。
  • | :匹配左右任意一个表达式(即“或”)。
  • () :分组,表示将匹配的部分作为一个整体处理。

示例:

1. 匹配电话号码

import re

pattern = r'(\d{3})-(\d{4})-(\d{4})'
text = "我的电话号码是 123-4567-8901,另一个是 987-6543-2100"

matches = re.findall(pattern, text)
for match in matches:
    print(match)

输出:

('123', '4567', '8901')
('987', '6543', '2100')

2. 验证邮箱地址

import re

pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
email = 'example@example.com'

if re.match(pattern, email):
    print("有效的邮箱地址")
else:
    print("无效的邮箱地址")

输出:

有效的邮箱地址

3. 替换文本中的数字

import re

text = "我有123个苹果和456个香蕉"
new_text = re.sub(r'\d+', '#', text)
print(new_text)

输出:

我有#个苹果和#个香蕉


正则表达式是一个强大的工具,能够帮助我们进行复杂的文本匹配和处理。如果你有具体的正则表达式需求或者遇到困难,可以告诉我,我可以帮助你编写或调试正则表达式!