Regex для извлечения текста в пределах заданной функции - PullRequest
0 голосов
/ 26 апреля 2019

Я читаю текст из файла .config, а затем у меня есть длинная строка, где мне нужно извлечь текст, который соответствует приведенному ниже шаблону.В файле .config определены 2 функции (input and filter)

Это текст, извлеченный из файла .config

input {
  name: "abc",
  age: "20"
}

filter {
  name: "pqr",
  age: "25"
}

Мне нужно извлечь только текст в функции фильтравключая сам текст фильтра

ожидаемый вывод

filter {
  name: "pqr",
  age: "25"
}

Здесь я написал регулярное выражение, в котором я могу извлечь весь текст в скобках { }.

Создано регулярное выражение

В данный момент он извлекает текст из всего файла.Любой может помочь мне обновить регулярное выражение, чтобы извлечь только функцию фильтра с ее именем, обновив регулярное выражение (нам необходимо учитывать как промежуточное пространство, так и поведение, не существующее)

сценарий 1 - пространство междуфильтровать текст и круглые скобки

filter {
  name: "pqr",
  age: "25"
}

и

сценарий 2 - пробел между текстовым фильтром и круглыми скобками отсутствует

filter{
  name: "pqr",
  age: "25"
}

1 Ответ

1 голос
/ 26 апреля 2019

Вы можете использовать это регулярное выражение, которое будет соответствовать вашему блоку фильтра, а также пробел между filter и {...} является необязательным и будет совпадать с пробелом или без него.

^filter\s*\{[^{}]+\}$

Примечание: я включил флаг m в демоверсии, поэтому вам нужно будет включить его на вашем языке программирования или использовать встроенный модификатор перед регулярным выражением, подобным этому (?m)^filter\s*\{[^{}]+\}$

Regex Объяснение:

  • ^filter - начинается сопоставление текста с фильтром
  • \s* - позволяет сопоставлять необязательные пробелы
  • \{ - буквальные совпадения {
  • [^{}]+ - соответствует одному или нескольким любым символам, кроме { или }
  • \}$ - Соответствует закрывающему } и отмечает конец ввода

Regex Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...