Пробую найти правильное регулярное выражение, никак не выходит.
Пример:
("текст1 текст2 'текст3 текст4' текст5 'текст6' текст7").split(<regexp>)
Необходимый результат:
[ "текст1 текст2 ", "'текст3 текст4'", " текст5 ", "'текст6'", " текст7"]
В тории должно было помочь выражение на подобии "(?='.*')|(?<='.*')"
, но вторая часть жалуется на невозможность использования звёздочки.
Используйте
public static String[] splitIncludingDelimiters(String regex, String text) {
List<String> list = new LinkedList<>();
Matcher matcher = Pattern.compile(regex).matcher(text);
int strt = 0;
while(matcher.find()){
list.add( text.substring(strt, matcher.start()) );
list.add(matcher.group());
strt = matcher.end();
}
if (strt < text.length()) list.add( text.substring(strt) );
return list.toArray(new String[list.size()]);
}
Пример использования:
String s = "текст1 текст2 'текст3 текст4' текст5 'текст6' текст7";
String regex = "'[^']*'";
for (String l : splitIncludingDelimiters(regex, s)) {
System.out.println(l);
}
Результат:
текст1 текст2
'текст3 текст4'
текст5
'текст6'
текст7
Можно и без регулярок, обычным циклом
public static void main(String[] args) {
System.out.printf(Split("текст1 текст2 'текст3 текст4' текст5 'текст6' текст7").toString());
}
static List<String> Split(String inp){
List<String> ret = new ArrayList<>();
int ind = 0;
while (ind < inp.length())
{
int start = ind;
while (ind < inp.length() && inp.charAt(ind)!= '\'') ind++;
ret.add(inp.substring(start, ind));
start = ind;
ind++;
if (ind >= inp.length()) return ret;
while (ind < inp.length() && inp.charAt(ind)!= '\'') ind++;
ret.add(inp.substring(start, Math.min(ind + 1, inp.length())));
ind++;
}
return ret;
}
Вывод
[текст1 текст2 , 'текст3 текст4', текст5 , 'текст6', текст7]
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не получается выполнить задание, условие которого следующее: ТРАНСПОЗИЦИЯ С ФИКСИРОВАННЫМ ПЕРИОДОМ: В этом случае сообщение делится на группы...
Вопрос такой: Как подключить несколько БД к Spring Boot?
Сколько бы примеров и полей с датами на Java я не видел, всегда (или почти всегда) используют класс DateПри этом, я думаю, всем известно, что класс...