📜  Python 3-正则表达式(1)

📅  最后修改于: 2023-12-03 15:04:03.892000             🧑  作者: Mango

Python 3-正则表达式

正则表达式是一种强大的工具,它可以通过特定的语法描述文本模式,以此来匹配和搜索字符串。在 Python 中,通过 re 模块可以使用正则表达式进行文本处理和匹配。

如何使用正则表达式

首先,我们需要导入 re 模块:

import re

接下来,使用 re 模块提供的函数来处理字符串:

# 匹配字符串中的数字
text = "这是一段包含数字的字符串:123"
pattern = r"\d+"  # 匹配一个或多个数字
result = re.findall(pattern, text)  # 使用 findall 函数查找所有匹配项

print(result)  # 输出结果为 ['123']

在上面的例子中,使用了 findall 函数来查找字符串中所有符合给定模式的子字符串。这个函数将返回一个匹配结果列表。

正则表达式语法

以下是一些常用正则表达式语法:

  • .:匹配任意字符,但不包括换行符;
  • \d:匹配数字字符;
  • \D:匹配非数字字符;
  • \s:匹配空白字符,包括空格、制表符、换行符等;
  • \S:匹配非空白字符;
  • \w:匹配字母、数字、下划线字符;
  • \W:匹配非字母、数字、下划线字符;
  • *:匹配前面的字符出现 0 次或多次;
  • +:匹配前面的字符出现 1 次或多次;
  • ?:匹配前面的字符出现 0 次或 1 次;
  • {n}:匹配前面的字符出现恰好 n 次;
  • {n,}:匹配前面的字符出现至少 n 次;
  • {n,m}:匹配前面的字符出现次数介于 n 和 m 之间。
示例

下面是一些使用正则表达式的例子:

# 匹配带有邮箱地址的字符串
text = "我的邮箱是 john@mydomain.com,而你的邮箱是 alice@yourdomain.com。"
pattern = r"\w+@\w+\.\w+"  # 匹配邮箱地址格式
result = re.findall(pattern, text)  # 查找所有匹配项

print(result)  # 输出结果为 ['john@mydomain.com', 'alice@yourdomain.com']

# 匹配HTML标签中的文本
html = "<h1>这是标题</h1><p>这是一段正文。</p>"
pattern = r"<.*?>\s*(.*?)\s*</.*?>"  # 匹配 HTML 标签内容
result = re.findall(pattern, html, re.S)  # 使用 re.S 模式匹配

print(result)  # 输出结果为 ['这是标题', '这是一段正文。']

# 替换字符串中的内容
text = "今天的天气非常好!"
pattern = r"好"  # 匹配“好”字
result = re.sub(pattern, "棒", text)  # 将匹配结果替换为“棒”

print(result)  # 输出结果为 “今天的天气非常棒!”

以上例子中,我们演示了如何使用正则表达式匹配字符串中的目标内容,以及如何替换字符串中的部分内容。

小结

在 Python 中,使用 re 模块可以方便地使用正则表达式进行文本处理和匹配。掌握了正则表达式语法,我们可以使用各种各样的模式来查找和替换字符串中的内容。