考虑到动态文本的ABAP regex

我有一个字符串,其中某处包含。

{"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个或任意数量的前一个字符或组的重复。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

rails: 如何基于子域覆盖locale?

2022-4-22 14:08:45

解决方案

在所有文件中找到JSON键,并删除相应的键值对。

2022-4-22 14:08:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索