Сопоставить строку в многострочную строку, исключая специальные символы - PullRequest
1 голос
/ 16 июня 2020

У меня есть шаблон yaml с таким содержанием:

Пример 1:

- key: MY_KEY 
  value: "{{ $MY_VAL }}"

Пример 2:

- key: MY_KEY 
  value: "$MY_VAL"

Пример 3:

- key: MY_KEY 
  value: '$MY_VAL'

Пример 4:

- key: MY_KEY 
  value: 'MY_VAL'

Я хочу сопоставить с регулярным выражением MY_VAL в случае MY_KEY с новой строкой (\ r \ n), затем MY_VAL, но просто в случае, если это не какая-либо переменная, и это реальное значение (например, alphanumeri c).

В приведенном выше примере 1 и примере 2 и примере 3 => Я хочу, чтобы оно не возвращало совпадений.

В примере 4 я хочу это вернется, есть совпадение.

Я пробовал это регулярное выражение безуспешно (ИМХО, я думал, что это сработает, но это не так):

MY_KEY[\r\n]+[^${}].[\w].([^\r\n]+)

Я следую этому вопросу о многострочном регулярном выражении, но в этом случае это не поможет:

{ ссылка }

Пожалуйста, помогите: D

1 Ответ

0 голосов
/ 16 июня 2020

Вы можете использовать

MY_KEY[^\S\r\n]*[\r\n]+[^\S\r\n]*\w+:[^\S\r\n]*'(\w+)'

См. демонстрацию регулярных выражений

Подробности

  • MY_KEY - буквальная строка
  • [^\S\r\n]* - 0 или более символов пробела, кроме CR и LF
  • [\r\n]+ - один или несколько символов CR или LF
  • [^\S\r\n]* - 0 или более пробельных символов, кроме CR и LF
  • \w+ - одинарных или словарных символов
  • : - двоеточие
  • [^\S\r\n]* - 0 или более символы пробела, отличные от CR и LF
  • '(\w+)' - ', символы 1+, '.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...