0Pricing
DevOps Bootcamp · 课时

捕获组、反向引用与替换

使用括号捕获匹配结果中的部分内容,并通过反向引用复用这些内容,实现强大的匹配和文本替换。

捕获组、反向引用与替换 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 正则表达式简介(Regex)
  2. 使用正则表达式高级应用 Grep
  3. 结合正则表达式使用 sed/awk
  4. 捕获组、反向引用与替换
← 返回 DevOps Bootcamp