Gemini说
本页目录· 8 条
一、 本周课程内容大纲
这周课程的核心主题是正则表达式(Regular Expressions),以下是主要内容大纲:
- 正则表达式的定义与用途 (What and Why):介绍什么是正则表达式,以及它在查找、替换、提取和验证文本(如邮箱、日期格式)中的作用。
- 正则表达式语法 (Regular Expression Syntax):
- 字符集 (Character Sets):基础匹配、大小写敏感、范围匹配(Ranges)、否定字符集(Negative Character Sets)以及简写符号(Shorthand Character Sets)。
- 重复匹配 (Repetition):如何匹配出现多次的模式(使用 ,
+,?或{m,n}限定符)。 - 分组与选择 (Grouping & Alternation):使用括号进行分组和使用
|表达“或”逻辑。
- Python 中的原始字符串 (Raw String in Python):解决“反斜杠灾难”,简化代码编写。
二、 老师在课堂上强调的重点
老师在讲解知识点的同时,着重强调了以下几个关于作业和实际应用的关键信息:
- 关于 Assessment 1 (第一次作业):
- 组队要求:必须尽快组建 4 到 5 人的团队,人太少的组需要寻找新成员。
- 作业性质:这是一个开放性、需要创造力的数据分析任务,没有唯一的“标准正确答案”。
- 思维方式:老师鼓励大家不要拘泥于标准规则,要发散思维甚至“疯狂”一点,从不同角度去挖掘数据中隐藏的、别人没有注意到的信息。
- 慎用 AI:虽然可以使用 ChatGPT,但它无法直接给你最终的正确答案。因为如果你给的指令不够清晰,AI 总是会漏掉边缘情况;你需要自己搞懂逻辑,再去引导 AI。
- 关于正则表达式的学习与陷阱:
- 在真实世界的数据分析中,绝对逃不开文本数据,因为文本能传达纯数字无法表达的复杂观点和情感;而正则表达式正是让计算机“理解”人类语言规则(NLP)的基础。
- 先懂后写:遇到一大串像乱码一样的正则表达式(比如邮箱验证公式)不要猜,先学会通过拆分“区块”来读懂它,然后再尝试自己写。
- 常见错误:正则表达式是严格区分大小写的(Case-sensitive)。此外,老师特别提醒要小心“空格(white space)”等不可见字符,忽略它们是导致匹配失败的常见原因。
三、 一步步带你学习本节课内容
现在,我们跟着课件的逻辑,一步步学习正则表达式的基础知识:
第一步:理解正则表达式在做什么?
由于计算机只懂 0 和 1,我们需要一种特殊的“符号语言”来教计算机识别文本规律。例如,你想从一份文件里把所有拼写为“Bob”或“Bobby”的名字都替换成“Robert”,或者你想检查用户输入的邮箱格式对不对(是不是包含 @ 和 .com),正则表达式就能用简短的符号帮你迅速搞定。
第二步:学习基础匹配 —— 字符集 (Character Sets)
- 方括号
[...]:表示“匹配括号里的任意一个字符”。- 例子:
gr[ea]y可以匹配 "grey" 也可以匹配 "gray",但不能匹配 "graey"(因为括号里的规则只选其中一个应用一次)。
- 区间范围:不用把字母全写出来,用连字符 。
[a-zA-Z]代表所有英文字母,[0-9]代表所有数字。 - 否定匹配
[^...]:在括号最前面加^表示“不要这些”。比如[^b]og会匹配 "hog" 和 "dog",但绝不会匹配 "bog"。 - 超级好用的简写:
\d= 匹配数字(等同于[0-9])。\w= 匹配单词字符(字母、数字、下划线)。\s= 匹配空格、换行符等不可见字符。- 大写往往是反义词:比如
\D就是匹配“非数字”。
第三步:搞定出现次数 —— 重复 (Repetition)
如果你想匹配的内容长度不固定(比如邮箱的名字部分有长有短),你就需要重复符号(它们只作用于前面紧挨着的那一个字符或规则):
- :出现 0 次或多次。
+:出现 1 次或多次。?:出现 0 次或 1 次。{m, n}:精准控制次数。例如\d{2,4}表示这里必须出现连续 2 到 4 个数字。
第四步:进阶组合 —— 分组 (Grouping) 和 选言 (Alternation)
- 分组
(...):如果你想把上面学到的“重复”功能应用到一整个词上,可以用小括号把它包起来。例如,(abc)+就可以匹配 "abc", "abcabc", "abcabcabc"。 - 或逻辑
|:代表前后两者满足其一即可。比如apple|orange匹配苹果或者橘子;(ei|ie)可以用来匹配拼写容易混淆的词缀。
第五步:实战必知 —— Python 里的原始字符串 (Raw String)
在 Python 代码里写正则表达式时,常常需要打很多反斜杠(\)。为了匹配一个真实的反斜杠,你甚至要写出 \\\\ 这种反人类的代码(这叫 Backslash Plague)。 解决方法:在 Python 字符串的引号前面加一个小写的 r,比如 r"\w+\s+"。这告诉 Python:“这就是一个原始字符串,不要给我乱转义”,这能让你的正则表达式清晰很多。