2013-12-08 49 views
0

我有以下字符串,我試圖分裂:如何在保留分隔符的前面使用正則表達式分隔字符串?

"03/04/1987", "Joseph", "Sam", "F", "12/09/1976", "Saram", "Mary", "M","08/10/1969", "Shik", "Shaary", "F" 

我需要使用正則表達式這個字符串分割成多個字符串。結果應該是這樣的:?

"03/04/1987", "Joseph", "Sam", "F" 
"12/09/1976", "Saram", "Mary", "M" 
"08/10/1969", "Shik", "Shaary", "F" 

謝謝您的幫助


我找到了答案(= \ d {2}/\ d {2}/\ d {4} )。謝謝。

+0

在這一個java問題更換? – Bohemian

+0

(?<= \ d {2}/\ d {2}/\ d我試過這個,但並不完全是我想要的 – user3052445

回答

0

如果您指出了正在使用的正則表達式的風格,那麼提供更完整的解決方案會更容易。但是,您可以分割一個逗號,後跟zeri或更多空格,並且對日期字符串使用正向前查看。使用lookahead可確保引用的日期字符串本身不會被刪除。

,\s*(?="\d{2}/\d{2}/\d{4}") 

在.NET中您可以使用:

splitArray = Regex.Split(subjectString, @",\s*(?=""\d{2}/\d{2}/\d{4}"")", RegexOptions.Singleline); 
0

這應該爲你工作:

String[] parts = str.split("(?<=\"[FM]\",) "); 

它使用正向後看斷言,但無法捕捉的,該空間之前的字符或者是"F","M",

+0

分隔符是\ d {2}/\ d {2}/\ d {4} 。有時記錄可能沒有F或M,但肯定是從日期開始的。 – user3052445

+0

正確的是(?= \ d {2}/\ d {2}/\ d {4})。 – user3052445

0

perfomr使用該圖案,\s*(?=(([^"]*"){8})*$)或分裂與\nDemo

相關問題