首页 > 解决方案 > 正则表达式捕获两个字符之间匹配的单词

问题描述

我试图找出提取两个字符之间的所有文本(忽略换行符)的最佳方法,这些文本与指定的两个字符之间的单词匹配。

在下面的示例中,我想通过 zip 22222找到并从{ until }提取/分组它的块,即 { "zip":"22222", "total":2 }

例子 :

{
   "zip":"11111",
   "total":1
},
{
   "zip":"22222",
   "total":2
},
{
   "zip":"33333",
   "total":3
}

想要提取/捕获/分组 zip 22222 的块 {...},如下所示:

{
   "zip":"22222",
   "total":2
}  

我尝试了以下方法,但这正在捕获所有邮政编码的块

(?s)(?<={)(.*?)(?=}) 

https://regex101.com/r/0wTDyj/1

标签: regex

解决方案


下面的正则表达式对我有用:

(?s)(?={)(?:(?:(?!"zip").) ?"zip"\s :\s*"22222".*?)(?<=})


推荐阅读