捕获组、反向引用与替换
使用括号捕获匹配结果中的部分内容,并通过反向引用复用这些内容,实现强大的匹配和文本替换。
捕获组、反向引用与替换 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
什么是捕获组?
圆括号 ( ) 会创建一个捕获组,记录其匹配的文本,以便稍后引用。
echo "2026-05-29" | grep -E "([0-9]{4})-([0-9]{2})-([0-9]{2})"组的编号
组按照左括号从左到右的顺序编号。组 1 是第一个 (,组 2 是第二个,依此类推。
# (year)(month)(day)
# group 1 = year, 2 = month, 3 = day匹配中的反向引用
像 \1 这样的反向引用会匹配前一个组捕获的 SAME 文本。这对于查找重复内容非常有用。
echo "hello world world" | grep -E "(\w+) \1"检测重复的单词
模式 (\w+) \1 会查找一个单词后面紧跟自身的情况,这是常见的输入错误。
echo "the the cat sat" | grep -oE "(\w+) \1"使用 sed 捕获组
在 sed 替换中,捕获的组会在替换文本中以 \1、\2 的形式重用。使用 -E 启用扩展正则表达式。
echo "2026-05-29" | sed -E "s|([0-9]{4})-([0-9]{2})-([0-9]{2})|\3/\2/\1|"交换字段
捕获两个字段,并在替换文本中重新排列它们,从而转换数据格式。
echo "Doe, John" | sed -E "s/(\w+), (\w+)/\2 \1/"非捕获概念
有时分组只是为了应用量词,而不是为了捕获。在 PCRE 中,您可以写成 (?:...) 来避免编号。
# PCRE only (grep -P):
echo "abcabc" | grep -P "(?:abc){2}"组内交替
使用交替符 | 组合选项,在捕获结果的同时匹配多个选项中的一个。
echo "cat dog fish" | grep -oE "(cat|dog)"为组应用量词
对整个组应用量词,可以重复一个模式。(ab)+ 会匹配一个或多个 ab 序列。
echo "ababab" | grep -oE "(ab)+"在 awk 中捕获
awk 使用 match() 以及 RSTART 和 RLENGTH 提取匹配的部分。
echo "id=42" | awk "{ if (match(\$0, /id=[0-9]+/)) print substr(\$0, RSTART, RLENGTH) }"实际格式重排
当需要将日志或 CSV 列一次性重新排布为新格式时,捕获组非常有用。
echo "John,30,NYC" | sed -E "s/([^,]+),([^,]+),([^,]+)/Name: \1 Age: \2 City: \3/"快速检查
检验您对捕获组的了解。
回顾
您已经掌握了捕获组:
- 圆括号会捕获匹配的文本并为其编号
- 反向引用
\1会再次匹配相同的文本 - 在
sed中,在替换文本中重用组来重新排列字段 - 在组内使用量词和交替来构建灵活的模式
常见问题解答
「捕获组、反向引用与替换」课时是免费的吗?
是的 — 「捕获组、反向引用与替换」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「捕获组、反向引用与替换」这节课中我会学到什么?
使用括号捕获匹配结果中的部分内容,并通过反向引用复用这些内容,实现强大的匹配和文本替换。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「捕获组、反向引用与替换」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。