Regex: поиск соответствия yaml - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь найти совпадение в регулярном выражении для всех root записей 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'

Regex вернет это совпадение:

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

1 Ответ

0 голосов
/ 10 апреля 2020
grep -E '^[^\r\n]+:[^\S\r\n]+[^[{\r\n][^\r\n]*$' test.yaml

Что я делаю:

  • ^[^\r\n]+: Соответствие ключа в начале строки
  • [^\S\r\n]+ Сопоставление встроенного пробела (некоторые реализации предоставляют \h за это). После двоеточия должен быть хотя бы один пробельный символ.
  • [^[{\r\n][^\r\n]*$ Соответствует содержимому. Убедитесь, что он начинается с чего-то, что не является [ или { в той же строке (это будет запускать вложенные объекты YAML). Затем сопоставьте все до конца строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...