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 组与它匹配的任何内容,并将被替换。
例如下面的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 组与它匹配的任何内容,并将被替换。