正则表达式:YAML查找匹配项

时间:2020-04-10 10:10:36

标签: regex yaml

我正在尝试在正则表达式中为所有根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'

1 个答案:

答案 0 :(得分:0)

grep -E '^[^\r\n]+:[^\S\r\n]+[^[{\r\n][^\r\n]*$' test.yaml

我在做什么:

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