 Hello 算法 1.0.0b4 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。” ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1. 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与0 码力 | 329 页 | 27.34 MB | 1 年前3 Hello 算法 1.0.0b4 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。” ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1. 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与0 码力 | 329 页 | 27.34 MB | 1 年前3
 Hello 算法 1.0.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.0.0 2024‑02‑09 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 � 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示0 码力 | 362 页 | 17.54 MB | 1 年前3 Hello 算法 1.0.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.0.0 2024‑02‑09 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 � 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示0 码力 | 362 页 | 17.54 MB | 1 年前3
 Hello 算法 1.1.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.1.0 2024‑04‑15 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 那么本书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示0 码力 | 364 页 | 18.42 MB | 1 年前3 Hello 算法 1.1.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.1.0 2024‑04‑15 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 那么本书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示0 码力 | 364 页 | 18.42 MB | 1 年前3
 Hello 算法 1.0.0b5 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b5 2023‑09‑10 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间, 最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 i 目 录 第 0 章 前言 1 0.1 关于本书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与0 码力 | 361 页 | 30.64 MB | 1 年前3 Hello 算法 1.0.0b5 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b5 2023‑09‑10 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间, 最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 i 目 录 第 0 章 前言 1 0.1 关于本书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与0 码力 | 361 页 | 30.64 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Python 版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) 代码审阅:靳宇栋(@krahets) Release 1.2.0 2024‑12‑06 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法, ,那么本书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 ‑tse、khoaxuantu、 krahets、night‑cruise、nuomi1、Reanon 和 rongyi 完成(按照首字母顺序排列)。感谢他们付出的时间 与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首0 码力 | 364 页 | 18.43 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Python 版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) 代码审阅:靳宇栋(@krahets) Release 1.2.0 2024‑12‑06 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法, ,那么本书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 ‑tse、khoaxuantu、 krahets、night‑cruise、nuomi1、Reanon 和 rongyi 完成(按照首字母顺序排列)。感谢他们付出的时间 与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首0 码力 | 364 页 | 18.43 MB | 10 月前3
 Python 3.11.10 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化的编 程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则,用于匹 配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任何你想要的 内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景,可 能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度更快的 字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽管 'a' )、'caaat' (3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的 后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 3 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的是, 首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd]0 码力 | 19 页 | 403.22 KB | 11 月前3 Python 3.11.10 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化的编 程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则,用于匹 配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任何你想要的 内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景,可 能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度更快的 字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽管 'a' )、'caaat' (3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的 后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 3 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的是, 首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd]0 码力 | 19 页 | 403.22 KB | 11 月前3
 Python 3.9.20 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化 的编程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则, 用于匹配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任 何你想要的内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 式将其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景, 可能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度 更快的字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理 解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽 'a' )、'caaat'(3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的 是,首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 401.42 KB | 11 月前3 Python 3.9.20 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化 的编程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则, 用于匹配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任 何你想要的内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 式将其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景, 可能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度 更快的字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理 解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽 'a' )、'caaat'(3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的 是,首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 401.42 KB | 11 月前3
 Python 3.9.20 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化的编 程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则,用于匹 配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任何你想要的 内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景,可 能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度更快的 字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽管 'a' )、'caaat' (3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的 后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的是, 首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 400.78 KB | 11 月前3 Python 3.9.20 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化的编 程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则,用于匹 配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任何你想要的 内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景,可 能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度更快的 字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽管 'a' )、'caaat' (3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的 后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的是, 首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 400.78 KB | 11 月前3
 Python 3.11.10 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化 的编程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则, 用于匹配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任 何你想要的内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 式将其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景, 可能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度 更快的字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理 解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽 'a' )、'caaat'(3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的 是,首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 403.35 KB | 11 月前3 Python 3.11.10 正则表达式 HOWTO 1 概述 正则表达式(Regular expression,也称为 RE、regex 或 regex pattern),本质上是一种微型的、高度专业化 的编程语言。在 Python 中,它通过 re 模块嵌入并提供使用。利用这种迷你语言,你可以指定一套规则, 用于匹配你想要的一系列可能的字符串。这些字符串可以是英文句子、邮箱地址、TeX 命令,或者是任 何你想要的内容。有了正则表达式,你就可以提出诸如“这个字符串是否匹配该 式将其拆分。 正则表达式 pattern 会被编译成一系列字节码,然后由 C 语言编写的匹配引擎执行。对于高级应用场景, 可能需要仔细考虑引擎如何执行给定的正则表达式,并以特定的方式编写正则表达式,以生成运行速度 更快的字节码。然而,本文不会涉及此类优化技术,因为这要求读者对匹配引擎的内部机制有深入的理 解。 正则表达式语言相对较小且受限,因此并非所有的字符串处理任务都能用正则表达式完成。有些任务尽 'a' )、'caaat'(3 个 'a' )等等。 像 * 这样的重复匹配是 贪婪的。当重复匹配正则时,匹配引擎会尝试重复尽可能多的次数。如果 pattern 的后续部分无法匹配成功,匹配引擎会回退并尝试减少重复次。 我们可以通过一个逐步的例子来更好理解这一点。来看看这个正则表达式 a[bcd]*b 。该表达式匹配的 是,首先是一个字母 'a' ,然后是零个或多个来自字符类 [bcd] 的字母,最后以一个0 码力 | 18 页 | 403.35 KB | 11 月前3
 Python 3.6.15 正则表达式 HOWTO 模块使用正则表达式的入门教程。它提供了比“标准库参考”中相应部分更 平和的介绍。 1 概述 正则表达式(称为 RE,或正则,或正则表达式模式)本质上是嵌入在 Python 中的一种微小的、高度专业化 的编程语言,可通过 re 模块获得。使用这种小语言,你可以为要匹配的可能字符串集指定规则;此集可能 包含英语句子,电子邮件地址,TeX 命令或你喜欢的任何内容。然后,您可以询问诸如“此字符串是否与模 式匹配?”或“此字符串中的模 编写的匹配引擎执行。对于高级用途,可能需要特别注 意引擎如何执行给定的正则,并将正则写入以某种方式生成运行速度更快的字节码。本文档未涉及优化,因 为它要求你充分了解匹配引擎的内部结构。 正则表达式语言相对较小且受限制,因此并非所有可能的字符串处理任务都可以使用正则表达式完成。还有 一些任务 可以用正则表达式完成,但表达式变得非常复杂。在这些情况下,你最好编写 Python 代码来进行 处理;虽然 (1 个 “’a’),` `'caaat' (3 个 'a' 字符),等等。 类似 * 这样的重复是 贪婪的;当重复正则时,匹配引擎将尝试尽可能多地重复它。如果模式的后续部分不 匹配,则匹配引擎将回退并以较少的重复次数再次尝试。 一个逐步的例子将使这更加明显。让我们考虑表达式 a[bcd]*b。这个正则匹配字母 'a',类 [bcd] 中的 零或多个字母,最后以 'b' 结尾。现在想象一下这个正则与字符串0 码力 | 18 页 | 391.58 KB | 11 月前3 Python 3.6.15 正则表达式 HOWTO 模块使用正则表达式的入门教程。它提供了比“标准库参考”中相应部分更 平和的介绍。 1 概述 正则表达式(称为 RE,或正则,或正则表达式模式)本质上是嵌入在 Python 中的一种微小的、高度专业化 的编程语言,可通过 re 模块获得。使用这种小语言,你可以为要匹配的可能字符串集指定规则;此集可能 包含英语句子,电子邮件地址,TeX 命令或你喜欢的任何内容。然后,您可以询问诸如“此字符串是否与模 式匹配?”或“此字符串中的模 编写的匹配引擎执行。对于高级用途,可能需要特别注 意引擎如何执行给定的正则,并将正则写入以某种方式生成运行速度更快的字节码。本文档未涉及优化,因 为它要求你充分了解匹配引擎的内部结构。 正则表达式语言相对较小且受限制,因此并非所有可能的字符串处理任务都可以使用正则表达式完成。还有 一些任务 可以用正则表达式完成,但表达式变得非常复杂。在这些情况下,你最好编写 Python 代码来进行 处理;虽然 (1 个 “’a’),` `'caaat' (3 个 'a' 字符),等等。 类似 * 这样的重复是 贪婪的;当重复正则时,匹配引擎将尝试尽可能多地重复它。如果模式的后续部分不 匹配,则匹配引擎将回退并以较少的重复次数再次尝试。 一个逐步的例子将使这更加明显。让我们考虑表达式 a[bcd]*b。这个正则匹配字母 'a',类 [bcd] 中的 零或多个字母,最后以 'b' 结尾。现在想象一下这个正则与字符串0 码力 | 18 页 | 391.58 KB | 11 月前3
共 150 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15














 
 