我有一串
"name"=>"3B Ae", "note"=>"Test fddd \"33 Ae\" FIXME", "is_on"=>"keke, baba"
我希望通过java程序将其解析为
的片段name
3B Ae
note
Test fddd \"33 Ae\" FIXME
is_on
keke, baba
注意,字符串的内容,即name
,3B Ae
,不是固定的。
有什么建议吗?
答案 0 :(得分:4)
如果你:
结果将如下所示,这是有效的JSON。然后,您可以使用JSON解析器(例如,GSON或Jackson)将这些值解析为java对象。
{
"name": "3B Ae",
"note": "Test fddd \"33 Ae\" FIXME",
"is_on": "keke, baba"
}
如果您可以控制产生此字符串的进程,我强烈建议您使用JSON或XML等标准格式,以便在另一端更容易解析。
答案 1 :(得分:1)
由于引用规则,我不确定正则表达式(即使是具有负外观背景的PCRE)也可以一致地解析它。您可能想要的是使用pushdown automaton或其他能够处理无上下文语言的解析器。
答案 2 :(得分:-1)
如果您可以确保您的数据(密钥或值)没有=>
或,
(或找到一些不会发生的其他分隔符),那么解决方案非常简单:< / p>
,
分割字符串,即可获得key => value
对value => pairs
键分开=>
即可得到您想要的内容如果inputString
持有
"name"=>"3B Ae", "note"=>"Test fddd \"33 Ae\" FIXME", "is_on"=>"keke baba"
(例如从文件中)
(我已在,
和;
之间将keke
更改为baba
String[] keyValuePairs = inputString.split(",");
for(String oneKeyValue : keyValuePairs)
{
String[] keyAndValue = oneKeyValue.split("=>");
}