Regex 什么';Ingres重写目标中编号占位符的含义是什么?

Regex 什么';Ingres重写目标中编号占位符的含义是什么?,regex,kubernetes-ingress,nginx-ingress,Regex,Kubernetes Ingress,Nginx Ingress,例如,在下面的清单(从中),我知道(.*)捕获的任何字符都将分配给占位符$2,然后在重写目标注释中用作参数,但为什么它是$2,而不是$1和$3?我在网上找不到任何解释这种差异的东西 apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 name: rewrite namespace: d

例如,在下面的清单(从中),我知道(.*)捕获的任何字符都将分配给占位符$2,然后在重写目标注释中用作参数,但为什么它是$2,而不是$1和$3?我在网上找不到任何解释这种差异的东西

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  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
只引用与它匹配的任何对象的组2,并将替换为该组。

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


因此,在
/something(/|$)(.*)
中,任何匹配
(/|$)
的都是组1,任何匹配
(.*)
的都是组2。在您的示例中,
$2
只引用与它匹配的任何对象的第2组,并将替换为该组。

在正则表达式中,括号
()
中的每个部分都被视为一个组,并且每个部分都被编号。组0是整个匹配项,组1是第一个组,以此类推。因此,在
/something(/|$)(.*)
中,任何匹配
(/|$)
的都是组1,任何匹配
(.*)
的都是组2<代码>$2只是指与之匹配的任何对象的组。@Grismar很棒的答案,您介意将其发布在“答案”部分吗?在正则表达式中,括号
()
中的每个部分都被视为一个组,并且每个部分都被编号。组0是整个匹配项,组1是第一个组,以此类推。因此,在
/something(/|$)(.*)
中,任何匹配
(/|$)
的都是组1,任何匹配
(.*)
的都是组2<代码>$2只是指任何与之匹配的组。@Grismar很棒的答案,您介意将其发布在答案部分吗?