Дается строка, которую нужно распарсить на составные части
String line = "param1 param2 'param3 param3 param3' param4";
String[] params = line.split("Регулярное выражение");
На выходе params должен разбиваться по пробелу и по 'тексту в кавычках':
То есть:
param1
param2
param3 param3 param3
param4
Я не могу составить подобное регулярное выражение, прошу помочь.
Вот мой вариант, но он не работает так как нужно:
String[] params = line.split("[\\s(^'.'$)]");
Ответ
Еще вариант:
String line = "param1 param2 'param3 param3 param3' param4";
System.out.println(Arrays.asList(line.replaceAll("\'", "").split("'?(\\s|$)(?=(([^']*'){2})*[^']*$)'?")));
// [param1, param2, param3 param3 param3, param4]
С использованием apache-commons-lang
StrTokenizer tokenizer = new StrTokenizer(line, ' ', '\'');
while(tokenizer.hasNext()) {
System.out.println(tokenizer.nextToken());
}
// param1
// param2
// param3 param3 param3
// param4
Последний вариант (честно стырено отсюда):
ArrayList
Комментариев нет:
Отправить комментарий