【问题标题】:Regex: yaml finding match正则表达式:yaml 查找匹配
【发布时间】:2020-04-10 10:10:36
【问题描述】:

我正在尝试在正则表达式中匹配所有根 yaml 条目及其值。因此,仅考虑具有值的条目(不匹配任何嵌套条目)。我一直在弄乱它,但无济于事。谢谢!

在这个例子中:

metadata:
  url: "https://www.google.com"
booleanvalue: 'false'
tls:
  host:
    google_net: "google.net"
  secret:
    big_secert_net: "cert"
API_HOST: 'https://api.test.com'
DOMAIN: 'api.domain'
METRIC_ENVIRONMENT: 'test'

正则表达式会返回这个匹配:

booleanvalue: 'false'
API_HOST: 'https://api.test.com'
DOMAIN: 'api.domain'
METRIC_ENVIRONMENT: 'test'

【问题讨论】:

    标签: regex yaml


    【解决方案1】:
    grep -E '^[^\r\n]+:[^\S\r\n]+[^[{\r\n][^\r\n]*$' test.yaml
    

    我在做什么:

    • ^[^\r\n]+:匹配行首的key
    • [^\S\r\n]+ 匹配内联空格(一些实现为此提供了\h)。冒号后必须至少有一个空格字符。
    • [^[{\r\n][^\r\n]*$ 匹配内容。确保它以不是 [ 或 { 在同一行的内容开头(这些内容将开始嵌套的 YAML 对象)。然后,匹配所有内容,直到行尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多