在Python中的元字符

在Python中的元字符

元字符是正则表达式的一个非常重要的概念,它帮助我们使用Python的正则表达式模块解决编程任务。在本教程中,我们将学习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]。

让我们来理解下面的示例。

示例

import re
str1 = "Python is a most popular programming language. Javatpoint is best resource to learn it."
res = re.findall(r"[jtp]", str1)
print(res)

输出:

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

解释 –

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

在目标字符串中同时搜索多个字符时,这个元字符可以非常有益。

反斜杠元字符 \

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

让我们看另一个示例 – 假设我们想要搜索匹配 #a 的字符串,其中 a 是紧跟着特殊字符 # 的字符。

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

字符 描述
\s 用于匹配一个空格字符。
\S 用于匹配一个非空格字符。
\0 用于匹配一个空字符。
\a 用于匹配一个响铃或警报。
\d 用于匹配一个十进制数字,即从0到9。
\D 用于匹配任何非十进制数字。
\n 用于匹配一个换行符。
\w 用于匹配字母数字[0-9a-zA-Z]的字符。
\W 用于匹配一个非单词字符。
\b 用于匹配一个词边界。

让我们看下面的示例。

示例使用反斜杠(/)来表示前一个字符串。

import re
str1 = "Python is a most popular programming language. Javatpoint is best resource to learn it."
res = re.findall(r"\.", str1)
print(res)

输出:

['.', '.']

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

. Dot元字符

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

让我们来看下面的示例。

示例

import re

given_string = "Peter likes to \n roam on the road at night"
# dot(.) metacharacter to match any character
result_match = re.search(r'.', given_string)
print(result_match.group())

# .+ to match any string except newline
result_match = re.search(r'.*', given_string )
print(result_match.group())

given_string1 = "Peter's mobile number is - 4564\n67"
result_match1 = re.search(r'.+', given_string1 )
print(result_match1.group())

输出:

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

胡萝卜符号

胡萝卜符号返回与开头匹配的字符。例如 – 如果我们想要从字符串中获取前五个单词,我们会使用脱字符 (^) 元字符。让我们理解以下示例。

示例

import re

given_string = "Peter likes to \n roam on the road at night"
# dot(.) metacharacter to match any character
result_match = re.search(r'^\w{5}', given_string)
print(result_match.group())

输出:

Peter

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

插入符(^)用于在每一行开头匹配模式

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

但是,通过re.M标志的帮助,我们可以在每一行上使用插入符。让我们理解下面的示例。

例如 –

import re

given_string = "Peter likes to \nroam on the road at night \nalso likes to eat ice-creame"
# dot(.) metacharacter to match any character
result_match = re.search(r"^\w{5}", given_string, re.M)
print(result_match.group())

$ 美元元字符

这个元字符与美元符号($)相反。它匹配字符串的末尾。在以下示例中,我们将匹配字符串末尾的冰淇淋。

示例

import re

given_string = "Peter likes to \nroam on the road at night \nalso likes to eat ice-cream"
# dot(.) metacharacter to match any character
result_match = re.search(r"\w{6}$", given_string, re.M)
print(result_match.group())

输出:

cream

*星号元字符

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

given_string = "Numbers are 1234, 8061,14567, 70453"

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

观察到我们需要匹配两个连续的\d(代表任何数字)。需要记住的是模式末尾的*表示前面的表达式出现零次或多次。在这种情况下,我们将表达式前置为最后一个\d,而不是全部两个\d。我们可以根据需要设置上限,但下限为零。

让我们理解以下示例。

示例

import re

given_string = "Numbers are 1234, 8061,14567, 70453"
# dot(.) metacharacter to match any character
result_match = re.findall(r"\d\d*", given_string)
print(result_match)

输出:

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

加号元字符

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

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

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

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

让我们来理解以下示例。

示例

import re

given_string = "Numbers are 5, 34, 1234, 8061,14567, 70453"
# dot(.) metacharacter to match any character
result_match = re.findall(r"\d\d+", given_string)
print(result_match)

输出:

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

我们获取比赛结果列表。

问号?元字符

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

要匹配的模式是/d/d/d/d?。我们包含了四个字符,这意味着匹配至少应该有四个数字。

让我们理解以下示例。

示例

import re

given_string = "Numbers are 5, 34, 1234, 8061,14567, 70453"
# dot(.) metacharacter to match any character
result_match = re.findall(r"\d\d\d\d?", given_string)
print(result_match)

输出:

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

管道(|)元字符

管道(|)元字符表示匹配字符的可选项。让我们了解以下示例。

示例

given_string = "This is my number."
# dot(.) metacharacter to match any character
result_match = re.search(r"i|n", given_string)
print(result_match)

替换组的实用性源于它们作为重复单位的能力。

结论

元字符在解决Python正则表达式现实问题中起着重要作用,它们有很广泛的应用。在本教程中,我们几乎包含了每个元字符的适当解释和编码示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程