Здравствуйте, Аноним, Вы писали:
А>Есть строка вида "(1)-(2),(3)\(4)" А>Каким регекспом сплитануть строку что бы получить 1 2 3 4 А>ЗЫ разделители между () могут быть любыми, главное что внутри ()
Обязательно String split? Через Matcher проще будет.
Пробовал в качестве сепаратора указать набор любых символы кроме цифр? А цифры могут быть вне скобок?
Re[2]: String split
От:
Аноним
Дата:
27.03.14 07:55
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>Есть строка вида "(1)-(2),(3)\(4)" А>>Каким регекспом сплитануть строку что бы получить 1 2 3 4 А>>ЗЫ разделители между () могут быть любыми, главное что внутри () B>Обязательно String split? Через Matcher проще будет. B>Пробовал в качестве сепаратора указать набор любых символы кроме цифр? А цифры могут быть вне скобок?
ну подумал что сплит так же сработает
Pattern p = Pattern.compile("\\([^\\(\\)]+\\)");
Matcher m = p.matcher(template);
while (m.find()) {
System.out.println(m.group(0));
}
Здравствуйте, Аноним, Вы писали:
А>ну подумал что сплит так же сработает
Сработает, если более четко с требованиями определиться. Разница в том что в split нужно указывать regexp для разделителя. А в Matcher для искомого текста.
А>
А>Pattern p = Pattern.compile("\\([^\\(\\)]+\\)");
А>
Зачем группы? Я бы через positive look behind и positive look ahead попробовал.
Типа такого:
"(?<=\\()\d+(?=\\))"
Re[4]: String split
От:
Аноним
Дата:
27.03.14 08:06
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>ну подумал что сплит так же сработает B>Сработает, если более четко с требованиями определиться. Разница в том что в split нужно указывать regexp для разделителя. А в Matcher для искомого текста.
А>>
А>>Pattern p = Pattern.compile("\\([^\\(\\)]+\\)");
А>>
B>Зачем группы? Я бы через positive look behind и positive look ahead попробовал. B>Типа такого: B>
B>"(?<=\\()\d+(?=\\))"
B>
вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно
Здравствуйте, Аноним, Вы писали:
А>вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно
"Вообщем" постановка снова плавает. В вашем примере между скобок находятся такие комбинации
1)-(2
2),(3
1)-(2),(3
1)-(2),(3)\(4
2),(3)\(4
3)\(4
3)\(4
Сделайте через обычный matcher.find() то выражение, что я привел выше.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(?<=\\()\\d+(?=\\))");
Matcher matcher = pattern.matcher("(1)-(2),(3)\\(4)");
// check all occurancewhile (matcher.find()) {
System.out.println(matcher.group());
}
}
}
Re[6]: String split
От:
Аноним
Дата:
27.03.14 08:25
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно B>"Вообщем" постановка снова плавает. В вашем примере между скобок находятся такие комбинации B>1)-(2 B>2),(3 B>1)-(2),(3 B>1)-(2),(3)\(4 B>2),(3)\(4 B>3)\(4 B>3)\(4
B>Сделайте через обычный matcher.find() то выражение, что я привел выше.
Строка (1)-(2),(3)\(4)
Должны получить массив строк: [(1), (2), (3), (4)]
B>>Сделайте через обычный matcher.find() то выражение, что я привел выше.
А>Строка (1)-(2),(3)\(4) А>Должны получить массив строк: [(1), (2), (3), (4)]
что делать с такой строкой (1)((2),(3))(4) ? кроме вас никто не знает, что есть на входе и должно быть на выходе. вангую, что если предполагается внутри скобок вполне конкретное содержимое, то \(\b\d+\b\) , хотя могу и ошибаться
Здравствуйте, Аноним, Вы писали:
А>Есть строка вида "(1)-(2),(3)\(4)" А>Каким регекспом сплитануть строку что бы получить 1 2 3 4 А>ЗЫ разделители между () могут быть любыми, главное что внутри ()
А я бы все символы кроме цифр превратил в пробелы, а потом схлопнул все множественные пробелы в один и сделал трим. Без всякого регекспа.
Здравствуйте, Географ, Вы писали:
Г>А я бы все символы кроме цифр превратил в пробелы, а потом схлопнул все множественные пробелы в один и сделал трим. Без всякого регекспа.
Мы не знаем нужно ли учитывать цифры без скобок и если нужно, то как именно.
Здравствуйте, Аноним, Вы писали:
А>Есть строка вида "(1)-(2),(3)\(4)" А>Каким регекспом сплитануть строку что бы получить 1 2 3 4
А>ЗЫ разделители между () могут быть любыми, главное что внутри ()
по-моему, вам не регексп нужен, а StringTokenizer
Здравствуйте, Аноним, Вы писали:
А>Есть строка вида "(1)-(2),(3)\(4)" А>Каким регекспом сплитануть строку что бы получить 1 2 3 4
А>ЗЫ разделители между () могут быть любыми, главное что внутри ()