2013-08-30 80 views
0

我有一個字符串first=abc123,second=status,z=3,a=45745並且想要得到輸出abc123,status,3,45745從逗號分隔的字符串讀取=後的值

我可以嘗試將其拆分爲多個數組並獲取值或將此字符串放入ArrayList並拆分以獲取結果,但希望檢查是否有人已經有一個不涉及大量數組創建的解決方案或操縱。就像一個可能有用的正則表達式。

〜TIA

+0

@Opt imusCrime OP提到了什麼已經嘗試過。尋找沒有理由的替代:) –

+0

看看[模式](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)和[Matcher]( http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html)類。 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ - 我認爲這整個SO平臺是建立在「向我們展示你已經嘗試過的並且我們會幫助你」的基礎上的,而不是「這是我面臨的問題,請爲我修復」。 – OptimusCrime

回答

1
.*?=([a-zA-Z0-9]*) 

Regular expression visualization

Edit live on Debuggex

這將工作。但是,爲了使它更好,在=符號之後或之前對字符有一些限制?

例如,

[a-zA-Z]*?=([a-zA-Z0-9]*) 

Regular expression visualization

這將只檢查是否有在平等的起點只能是字母標誌,然後字母/數字後並忽略,都在一起。如果它不符合這些要求,將會失敗。

如果你知道永遠不會有一個數字=我會建議事情回答。

注意:您將需要的所有東西都將在正則表達式的調用捕獲組(由()表示)中捕獲。

+0

是的,一個數字永遠不會出現在KEY中,但VALUE可以是字母數字。 – Ninja

+0

@Ninja'[a-zA-Z] *?=([a-zA-Z0-9] *)'這對你來說非常適合你。 – progrenhard

+0

是的。謝謝。 – Ninja

0

說明

此表達式將僅返回密鑰值集合的值部分作爲價值的陣列。

(?<=\w=)[^,]*Live Demo

enter image description here

示例文字

first=abc123,second=status,z=3,a=45745 

匹配

[0][0] = abc123 
[1][0] = status 
[2][0] = 3 
[3][0] = 45745