Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / substring between / 7 сообщений из 7, страница 1 из 1
20.03.2018, 13:56
    #39617513
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
Добрый день, Коллеги!

Не найду способ получить подстроку из строки заключенную в скобки.

Про StringUtils в курсе. Про нахождение индексов первой и последней скобки тоже в курсе, но имеется подводный камень.

Есть текст
Код: java
1.
2.
3.
4.
String str = "/*** остатки по складам ***/
-- totals(\"количество, тн.\",\"сумма (с НДС)\" by \"счет\",\"объект дохода\",\"организация\")
-- moneycolumns(\"цена\",\"сумма (с НДС)\")
-- weightcolumns(\"количество, тн.\")";



Мне надо получить все что между totals( и ) , moneycolumns( и ) , weightcolumns( и )
String totals = StringUtils.substringBetween(str, " totals(", ")");
String moneycolumns= StringUtils.substringBetween(str, " moneycolumns(", ")");
String weightcolumns= StringUtils.substringBetween(str, " weightcolumns(", ")");

Проблема в том, что некоторые вхождения имеют скобки, например сумма (с НДС) имеет скобки и StringUtils.substringBetween выдает не те подстроки.

Кто знает как мне достать полноценный текст между тегами??? )
Спс!
...
Рейтинг: 0 / 0
20.03.2018, 14:00
    #39617521
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
Т.е. мне надо
Код: java
1.
2.
String str = "/*** остатки по складам ***/-- totals(\"количество, тн.\",\"сумма (с НДС)\" by \"счет\",\"объект дохода\",\"организация\")-- moneycolumns(\"цена\",\"сумма (с НДС)\")-- weightcolumns(\"количество, тн.\")";
String totals = StringUtils.substringBetween(str, " totals(", ")");



Получить "количество, тн.","сумма (с НДС)" by "счет","объект дохода","организация"
...
Рейтинг: 0 / 0
20.03.2018, 14:04
    #39617531
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
разбейте на подстроки между -- и берите в каждой такой подстроке последнюю скобку.
...
Рейтинг: 0 / 0
20.03.2018, 14:07
    #39617536
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
Blazkowicz,

А регулярки учитывающей закрытие открытого тега для более изящного решения задачи нет?
...
Рейтинг: 0 / 0
20.03.2018, 14:29
    #39617561
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
AndronovMVА регулярки учитывающей закрытие открытого тега для более изящного решения задачи нет?
"руглярка" и "изящно" это несовместимые понятия.
...
Рейтинг: 0 / 0
20.03.2018, 15:28
    #39617625
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
Blazkowicz, )) ясно. спс, сделал иначе
...
Рейтинг: 0 / 0
22.03.2018, 11:03
    #39618731
unregestered
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
substring between
Что-то типа

Matcher matcher = Pattern.compile(".*totals\\((?<totals>.+?),.+?\\).*moneycolumns\\((?<moneycolumns>.+?),.+?\\).*weightcolumns\\((?<weightcolumns>.+?),.+?\\).*").matcher("");
matcher.group("totals");
matcher.group("moneycolumns");
matcher.group("weightcolumns");
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / substring between / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]