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

В этом ява вопрос? – 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

Смежные вопросы