ingress rewrite-target 中编号占位符的含义是什么?

What's the meaning of the numbered placeholders in ingress rewrite-target?

例如下面的manifest(from https://kubernetes.github.io/ingress-nginx/examples/rewrite/),我知道(.*)捕获的任何字符都会被分配给占位符$2,然后在rewrite-中用作参数目标注释,但为什么是 $2,而不是 $1 和 $3?我在 Internet 上找不到任何解释差异的内容。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)

在正则表达式中,括号 () 中的每个部分都被视为一个组,每个部分都有编号。第 0 组是整场比赛,第 1 组是第一组,依此类推

因此,在 /something(/|$)(.*) 中,任何匹配 (/|$) 的内容都是第 1 组,而任何匹配 (.*) 的内容都是第 2 组。在您的示例中, 仅指第 2 组与它匹配的任何内容,并将被替换。