正则表达式2024 年 8 月 29 日 | 阅读 6 分钟 正则表达式(通常称为 regex 或 RegEx)是一系列定义搜索模式的字符。它们用于在字符串中匹配模式并对它们执行各种操作,如替换、提取或拆分。 RegEx 是强大的文本处理工具,在 Python、Java、C#、Perl、JavaScript 等许多编程语言中广泛使用。它是开发人员需要理解和掌握的重要概念,因为它可以简化许多文本处理任务,使代码更简洁易读。 正则表达式的语法起初可能看起来令人困惑,但经过一些练习,它会变得更容易理解和使用。RegEx 中有几个具有特殊含义的特殊字符,例如点 (.)、星号 (*)、问号 (?)、加号 (+) 等。这些特殊字符称为元字符,它们的含义取决于它们使用的上下文。 正则表达式最常见的用途之一是在字符串中搜索特定模式。RegEx 模式被定义为字符串,并通过 match() 方法应用于字符串。如果检测到模式,该方法将生成一个匹配对象;否则,它返回 None。 例如,以下代码使用正则表达式在字符串中查找单词“dog” 输出 Match found. RegEx 广泛用于查找和更改字符串中的文本。使用 sub() 方法替换字符串中模式的每个实例。 例如,下面的代码将所有出现的单词“dog”更改为“cat” 上述代码的输出将是 The cat is barking. The cat is sleeping. RegEx 还可以将字符串分割成子字符串数组。使用模式,split() 方法可以将文本分割成子字符串数组。 例如,下面的代码根据空格将文本分割成单词数组 上述代码的输出将是 ['The', 'dog', 'is', 'barking.'] RegEx 也可用于验证用户输入。例如,您可以使用 RegEx 来验证电子邮件地址、电话号码或邮政编码。这在 Web 应用程序中是一个常见的用例,其中用户输入通常会进行验证,以确保它符合某些标准。 例如,以下代码使用正则表达式验证电子邮件地址 上述代码的输出将是 Valid email address. RegEx 的另一个常见用途是从字符串中提取信息。例如,您可以使用 RegEx 从完整姓名字符串中提取名字和姓氏。 例如,以下代码使用正则表达式从完整姓名字符串中提取名字和姓氏 上述代码的输出将是 First name: John Last name: Doe 输出 Start Index: 34 End Index: 40 上面的代码提供了字符串 portal 的起始索引和结束索引。 此实例中的 r 字符 (r'portal') 表示原始数据,而不是 regex。在原始字符串中,该字符不会被识别为转义字符,使其与标准字符串略有不同。这是因为模式匹配引擎将该字符用于内部转义。 RegEx 中的元字符元字符是在正则表达式模式中具有特殊含义的字符。它们用于定义要匹配的模式,而不是匹配字符本身。这些是最受欢迎的一些元字符。 (点) 匹配任何单个字符,但不匹配换行符。 星号 (*): 匹配其前面的字符或组的零次或多次出现。例如,a* 匹配字母“a”的零次或多次出现。 加号 (+) 表示给定的字符或组出现一次或多次。例如,a+ 匹配字母“a”的一次或多次出现。 问号 (?) 匹配其前面的字符或组的零次或一次出现。例如,a? 匹配字母“a”的零次或一次出现。 插入符号 (^) 表示一行或字符串的开头。例如,a 匹配一行或字符串开头的字母“a”。 美元符号 ($) 表示一行或字符串的结束。例如,a$ 匹配结尾处的“a”。 匹配前面字符或组的指定次数(在花括号中)。例如,a3 匹配字母“a”的精确三次出现。 [] (方括号) 匹配字符组中的一个字符。例如,[abc] 匹配“a”、“b”或“c”。 | (竖线) 符号匹配竖线之前的表达式或之后的表达式。例如,A|b 匹配“a”或“b”。 \ (反斜杠): 转义下一个字符。例如,\* 匹配星号字符本身,而不是匹配前一个字符的零次或多次出现。为了确保该字符不被赋予特殊处理,请使用反斜杠 (/)。这可以看作是元字符转义。例如,如果要搜索字符串中的点 (.)(如上表所示),则点 (.) 将被视为特殊字符和元字符之一。为了防止它失去其特殊性,在这种情况下,我们将在点 (.) 前面使用反斜杠 (/)。 () (括号): 定义一个组。例如,(a|b) 匹配“a”或“b”。 [] (方括号) 匹配字符组中的一个字符。例如,[abc] 匹配“a”、“b”或“c”。 方括号 [] 中的插入符号匹配不在字符组中的字符。例如,[abc] 匹配除“a”、“b”和“c”之外的所有字符。 d 匹配任何数字。类似于 [0-9]。 D: 匹配任何非数字字符。类似于 [0-9]。 w: 匹配单词中的任何字符。相当于 [a-zA-Z0-9_]。 W: 匹配任何非单词字符。类似于 [a-zA-Z0-9] 。 s 匹配任何空白字符。相当于 [tnrfv]。 \S: 匹配任何非空白字符。等同于 [^ \t\n\r\f\v]。 正则表达式广泛用于 Perl、Python、Ruby、JavaScript 和 grep 等许多编程语言和工具中。它们对于文本处理任务特别有用,例如模式匹配、字符串操作和数据提取。 以下是正则表达式的一些常见用例 验证:通过将其与模式进行比较,正则表达式可以验证用户输入,如电子邮件地址、电话号码和密码。 搜索和替换:正则表达式可用于在字符串中搜索模式并将其替换为另一个字符串。这对于删除不需要的字符、格式化文本或用实际值替换占位符等任务非常有用。 数据提取:正则表达式可用于从字符串中提取特定数据,例如提取数字、日期或 URL。数据抓取、解析日志文件或从文本文档中获取数据等任务都可以从中受益。 文本操作:正则表达式可用于以各种方式操作文本,例如将字符串分割成单独的单词、删除重复项或将文本转换为不同的大小写。 需要注意的是,虽然正则表达式非常强大,但它们也可能很复杂,并且难以阅读和维护,尤其是在处理复杂模式时。最好尽可能使用简单清晰的模式,并在生产环境中使用正则表达式之前对其进行彻底测试。 总之,正则表达式是用于文本处理的强大工具,可以简化许多文本处理任务,并使代码更简洁易读。它们在许多编程语言中得到广泛应用,并有许多应用,包括搜索、替换、拆分、验证用户输入和提取信息。虽然正则表达式的语法起初可能看起来令人困惑,但经过练习,它会变得更容易理解和使用。 下一主题使用正则表达式验证银行账号 |
在本教程中,我们将学习如何在 Python 中打印彩色文本。命令行应用程序的颜色与终端相同。有时,我们希望在输出中打印文本以吸引用户的注意力。在某些情况下,一点颜色可以使...
5 分钟阅读
| Airflow Python Operator 在本教程中,我们将学习 Apache Airflow 及其操作符。我们将讨论 Airflow 的所有操作符,但我们的主要目标是探索 Python 操作符以及如何使用它。在深入探讨此主题之前...
阅读 6 分钟
在本教程中,我们将介绍一些 PycURL 编码示例,展示连接点的各种功能。如演示部分所述,PyCURL 支持多种协议,并具有许多高级功能。然而,在我们的示例中,我们将使用 HTTP 函数...
阅读 10 分钟
在本教程中,我们将使用 Python 的 turtle 库绘制印度国旗。Turtle 库是一个 Python 库,用于在 Python 中创建独特的图形、图片和游戏。Python turtle 库由 Wally Feurzeig、Seymour Parpet 和 Cynthia Solomon 于 1967 年开发。它...
阅读 6 分钟
特殊字符是任何非字母数字字符或空格字符的字符。一些特殊字符的例子包括标点符号、符号和控制字符。一些特殊字符本身可能在正则表达式语法中有特殊含义。例如,点字符(.)是一个通配符,它……
阅读 2 分钟
简介:在本教程中,我们将学习 Selenium Python 中的 execute_script 驱动程序方法。Selenium 模块用于使用 Python 进行自动测试。Selenium Python 绑定提供了一个简单的 API。使用 Selenium WebDriver,此 API 用于编写功能或验收测试。一个……
阅读 3 分钟
简介:在本教程中,我们将讨论如何在 Python 中计算多维点 x 上的勒让德级数。多维数组中的勒让德级数有多种方法;最常用的方法是 polynomial.legendre.legval() 方法。此方法在……中执行微积分和算术运算。
阅读 3 分钟
在本教程中,我们将学习转置排序,也称为砖排序或奇偶排序。它是一种相对简单的排序算法,最初是为了在具有局部互连的并行处理器上使用而开发的。该算法类似于冒泡排序和...
阅读 3 分钟
学习:一步一步的方法 Python 语言的基本概念对于程序员和网络工程师至关重要。谁是网络工程师,他们做什么?网络工程师计划、执行和监督网络。此外,由于网络复杂多变,他们还会进行检查...
阅读 6 分钟
到目前为止,我们已经讨论了Python中各种转换。在本教程中,我们将学习另一种转换,即将字符串转换为Python中的列表。我们将使用以下方法来实现我们的目标:使用split(),使用带分隔符的split(),使用strip(),使用map()。让我们讨论每种方法……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India