【发布时间】:2017-03-20 19:43:54
【问题描述】:
我有一个 Scala 方法,它会得到这样的字符串:
"blah blah sediejdri \"foos\": {\"fizz\": \"buzz\"}, odedrfj49 blah"
而且我需要使用纯 Java/Scala(无外部库)从中去除“foos JSON”。即找到匹配模式的子串:
\"foos\" : {ANYTHING},
...把它去掉,所以输入字符串现在是:
"blah blah sediejdri odedrfj49 blah"
要搜索的令牌总是是\"foos\",但 JSON 花括号内的内容总是不同的。我最好的尝试是:
// Ex: "blah \"foos\": { flim flam }, blah blah" ==> "blah blah blah", etc.
def stripFoosJson(var : toClean : String) : String = {
val regex = ".*\"foos\" {.*},.*"
toClean.replaceAll(regex, "")
}
但是我的正则表达式显然不正确。谁能发现我哪里出错了?
【问题讨论】:
-
用正则表达式指定
ANYTHING并不容易,因为它可以包含也有大括号的嵌套对象...我会选择this answer,通过查找匹配的大括号并获取子字符串。 -
谢谢@insan-e (+1) - 你说得对,但是在我的特殊情况下,我知道我不会在花括号内有任何嵌套的 JSON。