2

我有以下 JSON 对象:

{ 
  "fieldId": "id1", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 142, 
}, 
{ 
  "fieldId": "id2", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 100, 
}, 
{ 
  "fieldId": "id3", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 159, 
}

我想匹配以下内容:

{ 
  "fieldId": "id2", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 100, 
}, 

我尝试使用正则表达式(\{.*)id2(.*?)\},,但匹配返回为:

{ 
  "fieldId": "id1", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 142, 
}, 
{ 
  "fieldId": "id2", 
  "isVisibleInDetails": true, 
  "isVisibleInGrid": true, 
  "columnWidth": 100, 
}, 

谁能纠正我的正则表达式?

4

3 回答 3

3

使用这个正则表达式\{[^{]*id2[^}]*?\}

于 2013-02-06T16:40:35.373 回答
0

我认为知道你想要做什么是一个非常重要的问题,但至少你可以使用这个正则表达式来得到你正在寻找的东西:

\{[^}]+?id2.*?\}
于 2013-02-06T16:41:01.113 回答
0

你很接近..

\{[^{}]*id2[^{}]*\}

使用[^{}]*而不是.*?

或者

 \{(?=[^{}]*id2).*?\}

在您的正则表达式.中也会匹配{}因此它会捕获其他人..使用[^{}]以避免匹配{}

于 2013-02-06T16:41:03.713 回答