Python 中的元字符

2025年3月17日 | 阅读 7 分钟

元字符是正则表达式的一个非常重要的概念,它帮助我们使用 Python 的 regex 模块来解决编程任务。在本教程中,我们将学习 Python 中的元字符以及如何使用它们。我们将解释每个元字符以及它们的简短而简单的示例。学习元字符的先决条件是您应该熟悉 Python 正则表达式。如果不是,请访问我们的 Python 正则表达式 教程。

Python 中的元字符是什么?

元字符是正则表达式的一部分,是象征正则表达式模式或格式的特殊字符。在正则表达式中,每个字符要么是元字符,要么是常规字符。但是,元字符具有特殊含义。它们不用于匹配任何模式,而是用于定义查找语句中特定模式的规则。元字符也称为运算符、符号或标记。

以下是我们可以用于 Python 的正则表达式元字符列表。

元字符描述示例
[]它代表一组字符。"[a-z]"
\它代表特殊序列。"\r"
.它表示在某个特定位置存在任何字符。"Ja.v."
^它代表出现在字符串开头的模式。"^Java"
$它代表出现在字符串末尾的模式。"point"
*它表示字符串中模式的零次或多次出现。"hello*"
+它表示字符串中模式的一次或多次出现。"hello+"
{}字符串中模式的指定出现次数。"java{2}"
|它表示存在此字符或彼字符。"java|point"
()捕获和分组(javatpoint)

以下是每个元字符及其代码的解释。

[] 方括号元字符

方括号 [] 代表一组字符。例如 - 假设我们想在目标字符串中获取 abc 字母的任何一次出现。或者,我们想将方括号内的单词与目标字符串进行匹配。我们可以使用 [abc] 来匹配此类模式。[abc] 将匹配包含 a、b 或 c 中的任何一个。

我们还可以使用破折号 - 指定字符的范围。

  • [0-5] - 这与 [012345] 相同。
  • [A-E] - 这与 [ABCDE] 相同。
  • [a-d] - 这与 [abcd] 相同。

让我们理解下面的例子。

示例 -

输出

['t', 't', 'p', 'p', 'p', 'J', 't', 'p', 't', 't', 't', 't']

解释 -

上面的程序返回了一个列表,其中包含方括号中给定模式的所有出现。

在目标字符串中同时搜索多个字符的情况下,此元字符可能很有益。

\ 反斜杠元字符

反斜杠用于转义各种字符,包括元字符。它还可以用于表示特殊序列。例如 - \d 用于查找 0-9 中的任何数字。

让我们看另一个例子 - 假设我们想搜索匹配 #a,其中 a 是一个字符,后跟 # 特殊字符。

以下是一些与 \ 一起使用的特殊字符表。

字符描述
\s它用于匹配一个空格字符。
\S它用于匹配一个非空格字符。
\0它用于匹配 NULL 字符。
\a它用于匹配蜂鸣声或警报。
\d它用于匹配一个十进制数字,即 0 到 9。
\D它用于匹配任何非十进制数字。
\n它帮助用户匹配新的一行。
\w它用于匹配字母数字 [0-9a-zA-Z] 字符。
\W它用于匹配一个非单词字符
\b它用于匹配单词边界。

让我们看下面的例子。

示例 - 使用 / 反斜杠获取之前的字符串。

输出

['.', '.']

我们可以看到,它返回了一个包含两个 (.) 点的列表。

. 点元字符

. 点元字符表示换行符 (\n) 以外的任何字符串字符。它可以包含大写或小写字母、符号(如美元 $、磅 #、感叹号 !、问号 ? 或冒号 :)、0 到 9 的数字,包括空格。

让我们理解下面的例子。

示例 -

输出

P 
Peter likes to 
Peter's mobile number is - 4564

^ 脱字符

脱字符从开头返回匹配的字符。例如 - 我们想要字符串中的前五个单词,我们会使用脱字符 (^) 元字符。让我们来理解下面的例子。

示例 -

输出

Peter

在上面的代码中,我们使用了 \w 特殊序列,它匹配任何小写或大写字母、数字和下划线字符。花括号中的五表示字母数字字符应恰好出现五次。

脱字符 ( ^ ) 用于匹配每行开头的模式

我们只能在单行字符串的开头使用脱字符元字符,因为它不用于多行匹配。

但是,借助 re.M 标志,我们可以将脱字符与每一行一起使用。让我们来理解下面的例子。

示例 -

$ 美元符号元字符

此元字符与美元 ($) 元字符正好相反。它匹配字符串的末尾。在下面的示例中,我们将匹配 ice-cream,它位于字符串的末尾。

示例 -

输出

cream

* 星号/星号元字符

它是正则表达式模式中最受欢迎和广泛使用的元字符之一。* 星号表示尽可能重复零次或多次,这意味着它是贪婪的重复。下面的示例演示了使用星号 (*) 元字符匹配所有数字。

要匹配的模式是 \d\d*

请注意,我们需要匹配两个连续的 \d(表示任何数字)。需要记住的是,模式的末尾意味着前面表达式的零次或多次重复。在这种情况下,我们是在最后一个 \d 前面重复,而不是前面两个都重复。我们可以设置我们想要的上限。但是,下限是零。

让我们理解下面的例子。

示例 -

输出

['1234', '8061', '14567', '70453']

+ 加号元字符

它是正则表达式模式中另一个受欢迎且广泛使用的元字符。它表示一次或多次重复,并且重复次数尽可能多。这意味着它是贪婪的重复。换句话说,前面表达式的重复次数为 1 次或更多次。

这里要匹配的模式是 \d\d+。

我们可以得到以下可能的模式匹配。

  • 我们可能得到一位数或两位数。
  • 我们可能得到三位数或最后 \d 的两次重复。
  • 我们也可能得到四位数。

让我们理解下面的例子。

示例 -

输出

['34', '1234', '8061', '14567', '70453']

我们得到匹配结果的列表。

? 问号元字符

问号 ? 元字符表示前面的字符或表达式重复零次或一次。重复仅限于两端。在下面的示例中,我们将 ? 与 * 和 + 元字符进行比较。

要匹配的模式是 /d/d/d/d?。我们包括四个,表示匹配至少需要包含四位数字。

让我们理解下面的例子。

示例 -

输出

['1234', '8061', '1456', '7045']

| 管道符元字符

管道符 (|) 元字符表示匹配字符的备选项。让我们来理解下面的例子。

示例 -

交替分组的实用性在于它们可以用作重复单元。

结论

元字符在解决 Python 正则表达式的实际问题中起着重要作用,并且种类繁多。在本教程中,我们包含了几乎所有的元字符,并提供了适当的解释和代码示例。