Я пытаюсь использовать регулярное выражение для разделения строки в поле, но, к сожалению, он не работает на 100% и пропускает часть, которую нужно разделить. Вот часть строки обработки программы:java: regex для строки
void parser(String s) {
String REG1 = "(',\\d)|(',')|(\\d,')|(\\d,\\d)";
Pattern p1 = Pattern.compile(REG1);
Matcher m1 = p1.matcher(s);
while (m1.find()) {
System.out.println(counter + ": "+s.substring(end, m1.end()-1)+" "+end+ " "+m1.end());
end =m1.end();
counter++;
}
}
Строка:
s= 3101,'12HQ18U0109','11YX27X0041','XX21','SHV7-P Hig, Hig','','GW1','MON','E','A','ASEXPORT-1',1,101,0,'0','1500','V','','',0,'mb-master1'
и проблема заключается в том, что она не расщепляется ,1,
или ,0,
Правила для синтаксического анализа являются: Строка заключенном ,' ',
, например ,'ASEXPORT-1',
int
прилагается только , ,
ожидается выход =
3101 | 12HQ18U0109 | 11YX27X0041 | XX21 | SHV7-P Hig, Hig| |GW1 |MON |E | A| ASEXPORT-1| 1 |101 |0 | 0 |1500 | V| | | 0 |mb-master1
В общей сложности 21 элементов.
Почему вы не '' String.split (',') 'сначала, а затем смотрите на разбиения, если они заключены в '' 'или нет? – Fildor
Может ли строка содержать запятую? (Например, 'str, ing') – gkalpak
Я думаю, вы могли бы просто разделить строку while на «,», а затем элементы, заключенные в одинарные кавычки, будут строками, а элементы без одинарных кавычек - это int .. – Oneb