2014-11-25 46 views
0

這裏是內容的Java屬性如何從Java屬性提取字符串

xxx_error_tx1 = This is xxxx. Johe say: 
xxx_error_MapCode = xxx_error_tx1, test this function,Failed,\ 
       Default, Current,\ 
       App_Error_tx1 

我需要提取字符串ID和字符串內容,我可以正確地提取第1行的內容,但第二行的內容只抽取第一個字符串xxx_error_tx1, test this function,Failed,\。其餘的字符串不能提取。

正則表達式字符串是(?<ID>.+?)=(?<Translation>.+?)$,我知道這個正則表達式有一些問題,但我試圖修改來糾正模式,但也許我是新手,結果仍然不能滿足我的要求。

任何幫助,將不勝感激。

+0

可能重複[可.NET加載和分析屬性文件等同於Java屬性類?(http://stackoverflow.com/questions/485659/can-net-load-和-parse-a-properties-file-equivalent-to-java-properties-class) – Amadan 2014-11-25 05:01:32

回答

0

好像你想是這樣的,

(?<ID>.+?)=(?<Translation>(?:(?!\S+\s*=)[\s\S])+) 

DEMO

(?:(?!\S+\s*=)[\s\S])+匹配,這將不含有被這個\S+\s*=模式匹配的字符串一個或多個空格或非空格字符。

+0

謝謝!它可以工作。 – 2014-11-25 05:26:56

+0

@亨利你的意思是這個http://regex101.com/r/hC0qA9/3? – 2014-11-27 08:50:06

+0

對不起,我有其他的問題,如果下一行是註釋行 xxx_error_MapCode = xxx_error_tx1,測試這個功能,失敗,\ 默認,當前,\ App_Error_tx1 #報告 結果將包含註釋行,我可以用[^#]忽略註釋行,但我不知道應該插入到哪個位置。 – 2014-11-27 08:50:23

0

試試這個,它正確的包含了整個值,當這個值被分割成多行時,但是在隨後的行之前停止。

(?<ID>.+?)=(?<Translation>(?:.*\\\s)*.*) 

DEMO