正则表达式在交替操作上过于贪婪

时间:2016-03-31 18:18:23

标签: regex regex-greedy

我有以下正则表达式,它应该与JSON PATCH请求中的删除操作相匹配。

  

({\ S * \ “OP \” \ S *:\ S * \ “删除\”,\ S * \ “路径\” \ S *:\ S * \ “ \”, \ S \ “值\” \ S *:\ S *([{}] | \ “ \”)\ S *})

如果我将此正则表达式应用于

  

[{ “OP”: “除去”, “路径”: “/ emailAddresses”, “值”:[{ “EMAILTYPE”:{ “代码”: “E”, “codeSystemId”: “hl7.org” }, “EMAILADDRESS”: “abc@abcdef.com”, “idWithSource”: “ABC | 817921”}]},{ “OP”: “替换”, “路径”: “/ emailAddresses”, “值”:[ { “idWithSource”: “ABC | 822222”}]}]

我得到以下作为匹配。

  

{ “OP”: “除去”, “路径”: “/ emailAddresses”, “值”:[{ “EMAILTYPE”:{ “代码”: “E”, “codeSystemId”: “hl7.org”} “EMAILADDRESS”: “abc@abcdef.com”, “idWithSource”: “ABC | 817921”}]},{ “OP”: “替换”, “路径”: “/ emailAddresses”, “值”:[{ “idWithSource”: “ABC | 822222”}

它必须是以下内容:

  

{ “OP”: “除去”, “路径”: “/ emailAddresses”, “值”:[{ “EMAILTYPE”:{ “代码”: “E”, “codeSystemId”: “hl7.org”} “EMAILADDRESS”: “abc@abcde.com”, “idWithSource”: “ABC | 817921”}]}

如果我将此正则表达式应用于

  

[{“op”:“删除”,“路径”:“/ drugName”,“value”:“aadadada”},{“op”:   “替换”,“路径”:“/ drugName”,“value”:“Tylenol”}]

我得到以下作为匹配。

  

{“op”:“删除”,“路径”:“/ drugName”,“value”:“aadadada”},{“op”:   “replace”,“path”:“/ drugName”,“value”:“Tylenol”}

它必须是以下内容:

  

{“op”:“删除”,“路径”:“/ drugName”,“value”:“aadadada”}

这两个例子是值字段可以包含的格式。有没有人对如何解决这个问题有任何建议?

0 个答案:

没有答案