2013-12-08 25 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

相关问题