解析字符串我有正則表達式
"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
,不是固定的。 有什麼建議嗎?
解析字符串我有正則表達式
"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
,不是固定的。 有什麼建議嗎?
如果您:
結果會是這樣,這是有效的JSON。然後,您可以使用JSON解析器(例如GSON或Jackson)將這些值解析爲java對象。
{
"name": "3B Ae",
"note": "Test fddd \"33 Ae\" FIXME",
"is_on": "keke, baba"
}
如果你有超過產生這個字符串的過程控制,我強烈建議您使用標準格式像JSON或XML,可以更容易地分析在另一端。
由於引用規則,我不能確定一個正則表達式(即使是負面向後看的PCRE)也可以一致地解析它。您可能需要的是使用pushdown automaton或其他能夠處理上下文無關語言的解析器。
如果你能確保你的數據(鍵或值)不具有=>
或,
(或發現會不會發生一些其他的分隔符),該解決方案是非常簡單的:
,
你得到key => value
對value => pairs
通過=>
你得到你想要如果inputString
HOL什麼DS
"name"=>"3B Ae", "note"=>"Test fddd \"33 Ae\" FIXME", "is_on"=>"keke baba"
(從例如文件)
String[] keyValuePairs = inputString.split(",");
for(String oneKeyValue : keyValuePairs)
{
String[] keyAndValue = oneKeyValue.split("=>");
}
分割,不會給名稱=>值對,因爲逗號可能出現在值的內部(例如「keke,baba」) –
@Moe,是的。這就是我的答案的開始_如果你可以確保你的數據(鍵或值)沒有=>或a_,並且我明確提到_(我已經改變了,來自keke和baba之間)。如果OP對數據有控制權,這應該很容易做到,我認爲這更直接(JSON想法很酷,但是) – Nivas
就是你們的榜樣一個輸入字符串或多個輸入字符串(我從
keke
之間baba
改變了,
到;
)? –