我有一个字符串,其中某处包含。
{"id":"ID_A","name":"Test","visible":false},{"id":"ID_B","name":"Hallo","visible":false},...
我想把ID_A的可见值替换掉,这样就变成了:
{"id":"ID_A","name":"Test","visible":true},{"id":"ID_B","name":"Hallo","visible":false},...
ID始终是相同的。我不想改变所有其他对象的可见参数(例如ID_B)。
重要的是:name属性的值是动态的。所以我需要一些适用于name属性不同值的regex。
此外,我不能期望ID_A对象总是第一个。也许顺序可以改变。
因为我并不是regex专家,如果有人能帮助我,我会很高兴。
解决方案:
我不建议在JSON解析中使用正则表达式,因为RegEx在很多情况下可能无法工作。
在ABAP中,类似的东西可能在大多数情况下都能用。
DATA: text TYPE string, pattern TYPE string.
pattern = '("id":"ID_A"[^}]*"visible":)false'.
text = '{"id":"ID_A","name":"Test","visible":false},'
&& '{"id":"ID_B","name":"Hallo","visible":false},...'.
REPLACE ALL OCCURRENCES OF REGEX pattern
IN text WITH '$1true'.
上面的正则表达式不会起作用 如果一个元素的值含有 }
或某处多了一个空格等。
正则表达式的解释。
(...)
表示对子组的注册(可以用表示的方式来代替$
后面跟着子组的数量,例如在上面的代码中)$1
在上面的代码中)[^...]
任何不在建议字符列表中的字符,如[^}].
指任何不在建议字符列表中的字符,例如}
*
:kleene star允许0个或任意数量的前一个字符或组的重复。