regex 提取helm中两个字符之间的字符串

lf5gs5x2  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(201)

我尝试从_helper.tpl中的values.yaml提取()之间的所有字符串。
在my _helper.tpl中

{{- define "firstchart.extraction" -}}
{{- regexFindAll "(?<=\()(.*?)(?=\))"  .Values.monitor.url -1 -}}
{{- end -}}

我的values.yaml文件

monitor:
   url: "(zone-base-url)/google.com/(some-random-text)"

所以我想把zone-base-urlsome-random-text解压缩出来,怎么做?

elcex8rz

elcex8rz1#

看起来正则表达式库是不支持任何类型的查找循环的RE 2。这意味着,您需要将非消耗型查找循环“转换”为消耗型模式,同时仍将捕获组保持在\(\)分隔符之间:

{{- regexFindAll "\\((.*?)\\)"  .Values.monitor.url -1 -}}

或者,

{{- regexFindAll "\\(([^()]*)\\)"  .Values.monitor.url -1 -}}
  • 详细数据 *:
  • \(-一个(字符
  • (.*?)-组1:尽可能少的零个或多个除换行符以外的字符([^()]*匹配除()以外的零个或多个字符)
  • 一个\)字符

-1参数只提取Group 1的内容。
模式中的文字反斜扛必须加倍,才能表示文字反斜扛。

相关问题