簡體   English   中英

JAVA:解析單個字符串鍵值對

[英]JAVA: Parsing single String key value pairs

我正在嘗試找出一種方法來分離同一行上的鍵值對。

將以下輸入作為示例

key1=0 key2=val0 key3=my val 0 key4=some (val)

剛開始,我在輸入數據中看不到它,因為它被掩埋了,並且認為沒有任何空格。 這樣,我根據空間將每一行分成一個數組,然后將所得的數組作為Properties對象讀取,最后讀取到Map中。 現在這產生了不好的結果。

在這一點上,我認為這對正則表達式來說是個問題,而眾所周知,我對這種技巧並不滿意。

有沒有辦法獲取上述示例數據(單個字符串)並將其正確解析為生成的HashMap

key1:0
key2:val0
key3:my val 0
key4:some (val)

蒂雅!

編輯,回答:

Pattern p = Pattern.compile("(\\w+)=\"*((?<=\")[^\"]+(?=\")|([^\\s]+))\"*");

String test = "a0=d235 a1=2314 com1=\"abcd\" com2=\"a b c d\"";
Matcher m = p.matcher(test);

while(m.find()){
    print m.group(1);
    print "="
    println m.group(2);
}

嘗試這個。

String s = "key1=0 key2=val0 key3=my val 0 key4=some (val)";
Pattern pat = Pattern.compile("(\\b\\w+)=(.*?)(?=\\w+=|$)");
Matcher m = pat.matcher(s);
while (m.find())
    System.out.println(m.group(1) + ":" + m.group(2));

結果

key1:0 
key2:val0 
key3:my val 0 
key4:some (val)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM