如何在前面的分隔符保留分隔符时使用正则表达式拆分字符串?

时间:2013-12-08 19:22:12

标签: regex split

我有以下字符串,我试图拆分:

"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})。谢谢。

3 个答案:

答案 0 :(得分:0)

这应该适合你:

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

它使用正面的后视来断言但不捕获空格前面的字符是"F","M",

答案 1 :(得分:0)

如果您指出了正在使用的正则表达式,那么提供更完整的解决方案会更容易。但是,您可以拆分逗号,后面跟着zeri或更多空格,并使用日期字符串的正向前瞻限定。使用前瞻确保不会删除引用的日期字符串本身。

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

在.NET中,您可以使用:

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

答案 2 :(得分:0)

使用此模式执行拆分,\s*(?=(([^"]*"){8})*$)或替换为\n Demo