2012-02-27 26 views
-2
提取打包數據

我有一個數據庫中的數據在下面的格式:使用正則表達式

a:19:{s:9:"raceclass";a:5:{i:0;a:1:{i:0;s:7:"250cc B";}i:1;a:1:{i:1;s:6:"OPEN B";}i:2;a:1:{i:2;s:9:"Plus 25 B";}i:3;a:1:{i:3;s:8:"Vet 30 B";}i:4;a:1:{i:4;s:7:"Vintage";}}s:9:"firstname";a:1:{i:0;a:1:{i:0;s:5:"James";}}s:12:"middle_FIELD";a:1:{i:0;a:1:{i:0;s:1:"R";}}s:8:"lastname";a:1:{i:0;a:1:{i:0;s:9:"Slaughter";}}s:5:"email";a:1:{i:0;a:1:{i:0;s:29:"[email protected]";}}s:8:"address1";a:1:{i:0;a:1:{i:0;s:18:"21 DiMartino Court";}}s:4:"city";a:1:{i:0;a:1:{i:0;s:6:"Walden";}}s:5:"state";a:1:{i:0;a:1:{i:0;s:8:"New York";}}s:3:"zip";a:1:{i:0;a:1:{i:0;s:5:"12586";}}s:7:"country";a:1:{i:0;a:1:{i:0;s:13:"United States";}}s:6:"gender";a:1:{i:0;a:1:{i:0;s:4:"Male";}}s:3:"dob";a:1:{i:0;a:1:{i:0;s:10:"06/04/1974";}}s:5:"phone";a:1:{i:0;a:1:{i:0;s:12:"845-713-4421";}}s:5:"skill";a:1:{i:0;a:1:{i:0;s:12:" AMATEUR (B)";}}s:11:"ridernumber";a:1:{i:0;a:1:{i:0;s:2:"69";}}s:8:"bikemake";a:1:{i:0;a:1:{i:0;s:3:"HON";}}s:8:"enginecc";a:1:{i:0;a:1:{i:0;s:3:"450";}}s:9:"amanumber";a:1:{i:0;a:1:{i:0;s:7:"1094649";}}s:10:"amaexpdate";a:1:{i:0;a:1:{i:0;s:5:"03/12";}}} 

我如何寫一個正則表達式來操縱上面的字符串來獲得以下格式的數據?:

raceclass - 250cc B, OPEN B, Plus 25 B, Vet30, Vintage 
firstname - James 
middle_FIELD - R 
address1 = 21 DiMartino Court 
city - walden 
state - New york 
zip - 12586 
country - United States 
gender - Male 
dob - 06/04/1974 
phone - 845-713-4421 
skill - AMATEUR (B) 
ridernumber - 69 
bikemake - HON 
enginecc - 450 
amanumber - 1094649 
amaexpdate - 03/12 
+0

這是JSON數據嗎? – 2012-02-27 16:32:10

+0

那麼你想要包含在該字符串中的雙引號之間的所有東西嗎?一個正則表達式不能這樣做,順便說一句。 – m0skit0 2012-02-27 16:32:35

+0

* *表示什麼樣的數據格式? – 2012-02-27 16:33:26

回答

0

該數據不適合正則表達式。您應該使用合適的語法分析器來處理此字符串。在Java中有幾個很好的選擇,例如ANTLR

或者,如果這不是一個選項,它看起來像你只想處理之間的事情「」。看看java類Scanner。你應該能夠得到一些工作。只需查看字符串,然後查找"。如果發現開始收集文本到緩衝區。一旦發現另一個"忽略令牌,直到找到下一個"或輸入文本的末尾。

+0

你說得對。我需要包含在該字符串中的雙引號之間的所有內容。我嘗試下面的Java代碼:圖案P = Pattern.compile( 「\」([^ \ 「] *)\」「); \t \t匹配器M = p.matcher(paramsString);} \t \t \t System.out.println(m.group(1)); \t \t \t lst.add(m.group(1)); – 2012-02-27 16:49:28