正则表达式提取确切给定功能内的文本

时间:2019-04-26 05:19:42

标签: regex

我正在从.config文件中读取文本,然后有一个长字符串,我需要在其中提取与以下给定模式匹配的文本。 .config文件定义了2个功能(input and filter

这是从.config文件中提取的文本

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

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

我只需要提取过滤器函数中的文本,包括过滤器文本本身

预期输出

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

在这里,我编写了一个正则表达式,可以在{ }括号内提取所有文本。

Created Regex

目前,它提取整个文件中的文本。任何人都可以通过更新正则表达式来帮助我更新正则表达式以仅提取其名称的过滤器函数(我们还需要同时考虑中间空间的存在和不存在的行为)

场景1-过滤器文本和括号之间的空格

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

方案2-过滤器文本和括号之间没有空格

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

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来匹配您的过滤器块,并且filter{...}之间的空格是可选的,并且可以有或没有空格。

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

注意:我已经在演示中启用了m标志,因此您需要使用您的编程语言来启用它,或者在像这样的(?m)^filter\s*\{[^{}]+\}$

之前使用内联修饰符。

正则表达式说明

  • ^filter-开始将文本与过滤器匹配
  • \s*-允许匹配可选的空白
  • \{-匹配文字{
  • [^{}]+-匹配一个或多个除{}以外的任何字符
  • \}$-匹配结束的}并标记输入的结尾

Regex Demo