String split
От: Аноним  
Дата: 27.03.14 07:24
Оценка:
Есть строка вида "(1)-(2),(3)\(4)"
Каким регекспом сплитануть строку что бы получить 1 2 3 4

ЗЫ разделители между () могут быть любыми, главное что внутри ()
Re: String split
От: Blazkowicz Россия  
Дата: 27.03.14 07:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть строка вида "(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));
}
Re[3]: String split
От: Blazkowicz Россия  
Дата: 27.03.14 08:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>ну подумал что сплит так же сработает

Сработает, если более четко с требованиями определиться. Разница в том что в 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>


вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно
Re[5]: String split
От: vsb Казахстан  
Дата: 27.03.14 08:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно


\([^)]\)

Как то так. Просто по этому регэкспу ищите пока есть совпадения и всё.
Re[5]: String split
От: Blazkowicz Россия  
Дата: 27.03.14 08:13
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>вообщем задача: получить все что в скобках(можно вместе со скобками), все что между не нужно

"Вообщем" постановка снова плавает. В вашем примере между скобок находятся такие комбинации
1)-(2
2),(3
1)-(2),(3
1)-(2),(3)\(4
2),(3)\(4
3)\(4
3)\(4

Сделайте через обычный matcher.find() то выражение, что я привел выше.
Re: String split
От: Blazkowicz Россия  
Дата: 27.03.14 08:16
Оценка:
Здравствуйте, Аноним:

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 occurance
    while (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)]
Re[7]: String split
От: BrainSlug Израиль  
Дата: 27.03.14 08:37
Оценка:
B>>Сделайте через обычный matcher.find() то выражение, что я привел выше.

А>Строка (1)-(2),(3)\(4)

А>Должны получить массив строк: [(1), (2), (3), (4)]

что делать с такой строкой (1)((2),(3))(4) ? кроме вас никто не знает, что есть на входе и должно быть на выходе. вангую, что если предполагается внутри скобок вполне конкретное содержимое, то \(\b\d+\b\) , хотя могу и ошибаться
.
Re: String split
От: Географ Россия нет
Дата: 27.03.14 11:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть строка вида "(1)-(2),(3)\(4)"

А>Каким регекспом сплитануть строку что бы получить 1 2 3 4
А>ЗЫ разделители между () могут быть любыми, главное что внутри ()

А я бы все символы кроме цифр превратил в пробелы, а потом схлопнул все множественные пробелы в один и сделал трим. Без всякого регекспа.
Re[2]: String split
От: Blazkowicz Россия  
Дата: 27.03.14 11:34
Оценка:
Здравствуйте, Географ, Вы писали:

Г>А я бы все символы кроме цифр превратил в пробелы, а потом схлопнул все множественные пробелы в один и сделал трим. Без всякого регекспа.

Мы не знаем нужно ли учитывать цифры без скобок и если нужно, то как именно.
Re: String split
От: tavr  
Дата: 28.03.14 07:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть строка вида "(1)-(2),(3)\(4)"

А>Каким регекспом сплитануть строку что бы получить 1 2 3 4

А>ЗЫ разделители между () могут быть любыми, главное что внутри ()

по-моему, вам не регексп нужен, а StringTokenizer
Re: String split
От: muRn  
Дата: 14.04.14 09:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть строка вида "(1)-(2),(3)\(4)"

А>Каким регекспом сплитануть строку что бы получить 1 2 3 4

А>ЗЫ разделители между () могут быть любыми, главное что внутри ()


yourString.split("\\W+");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.