我正在从.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"
}
答案 0 :(得分:1)
您可以使用此正则表达式来匹配您的过滤器块,并且filter
和{...}
之间的空格是可选的,并且可以有或没有空格。
^filter\s*\{[^{}]+\}$
注意:我已经在演示中启用了m
标志,因此您需要使用您的编程语言来启用它,或者在像这样的(?m)^filter\s*\{[^{}]+\}$
正则表达式说明
^filter
-开始将文本与过滤器匹配\s*
-允许匹配可选的空白\{
-匹配文字{
[^{}]+
-匹配一个或多个除{
或}
以外的任何字符\}$
-匹配结束的}
并标记输入的结尾