【发布时间】:2020-11-20 02:40:32
【问题描述】:
比如下面的manifest(来自https://kubernetes.github.io/ingress-nginx/examples/rewrite/),我知道任何被(.*)捕获的字符都会赋值给占位符$2,然后在rewrite-target注解中作为参数使用,但是为什么是 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只是指组匹配的。 -
@Grismar 很好的答案,您介意在答案部分发布吗?
标签: regex kubernetes-ingress nginx-ingress