Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
1

Регулярные выражения. Некорректное выражение

16.05.2013, 16:48. Просмотров 837. Ответов 9
Метки нет (Все метки)

Собственно есть строка.
Java
1
String s = "[Что то]куча текста[Очередные теги] опять текст";
Мне надо выдрать строки между []
Написал код
Java
1
2
3
4
5
6
7
        List<String> _Temp = new ArrayList<>();
        String text = getTextOnSignList().toString().replace(" ", "").replace(",", "");
        Matcher matcher = Pattern.compile("([^[]+)(?=:[^]]*$)").matcher(text);
        while (matcher.find())
        {
           _Temp.add(matcher.group());
        }
Но java (NetBeans) ругается на "([^[]+)(?=:[^]]*$)" говоря "Некорректное регулярное выражение"
Пробовал так "([^\[]+)(?=:[^\]]*$)" но так в обще ошибка что естественно

Добавлено через 46 минут
Хм такой
Java
1
\[([^\[\]]+)\]
работает на "[Что то]куча текста[Очередные теги] опять текст";
Но уже на "[[Что то]]куча текста[[Очередные теги]] опять текст";
Одну скобку пропускает..
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 16:48
Ответы с готовыми решениями:

Регулярные выражение
Доброго времени суток! Подскажите как создать регулярное выражение, которые будет соответствовать...

Регулярные выражение
Всем привет. Как с помощью pattern и matcher вывести все числа, но только после определенного...

Регулярные выражение
Всем доборго дня! ПОмогите с кодом, если нетрудно. Мне нужно разбить текст на куски, которые...

Регулярные выражение
Всем привет. Как с помощью pattern и matcher вывести все числа, но только после определенного...

Регулярные выражения
Здравствуйте! Есть строка : &quot;abcbcaacbcbaacb&quot; вообщем состоящая из &quot;a&quot;, &quot;b&quot; и &quot;с&quot; в рандомном...

9
KuKu
1561 / 1039 / 93
Регистрация: 17.04.2009
Сообщений: 2,995
16.05.2013, 17:54 2
Java
1
2
3
4
5
...
Pattern.compile("\\[(.+?)\\]")
...
matcher.group(1)
...
Java
1
Pattern.compile("\\[\\[(.+?)\\]\\]")
Для двойных. В общем виде скажите, что надо. А то у вас шаблон со временем меняется.
1
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
16.05.2013, 18:43  [ТС] 3
Цитата Сообщение от KuKu Посмотреть сообщение
Java
1
2
3
4
5
...
Pattern.compile("\\[(.+?)\\]")
...
matcher.group(1)
...
Java
1
Pattern.compile("\\[\\[(.+?)\\]\\]")
Для двойных. В общем виде скажите, что надо. А то у вас шаблон со временем меняется.
Проблема в том что скобок вложенных может быть от 1 до 3 но надо получить значение между ними.
то есть может быть
синтаксический мусор [нужный текст]синтаксический мусор
а может быть
синтаксический мусор[[[нужный текст]]]синтаксический мусор
Нужен просто текст между скобками
0
dr_yand
157 / 138 / 15
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
16.05.2013, 19:05 4
Цитата Сообщение от Kill100 Посмотреть сообщение
[[[нужный текст]]]
отсюда нужно взять нужный текст ?
0
16.05.2013, 19:05
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
16.05.2013, 19:14  [ТС] 5
Цитата Сообщение от dr_yand Посмотреть сообщение
отсюда нужно взять нужный текст ?
Да.
0
KuKu
1561 / 1039 / 93
Регистрация: 17.04.2009
Сообщений: 2,995
16.05.2013, 19:57 6
Java
1
Pattern.compile("\\[([^\\[\\]]+?)\\]")
с этого бы и начали
0
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
16.05.2013, 20:22  [ТС] 7
Цитата Сообщение от KuKu Посмотреть сообщение
Java
1
Pattern.compile("\\[([^\\[\\]]+?)\\]")
с этого бы и начали
Так пробовал но выводит со скобками.
Было "Мусор[15,878]мусор"
получил
[15,878]
Было
"Мусор[[15,878]]мусор"
получил
[15,878]
то есть по результату он аналогичен
Цитата Сообщение от Kill100 Посмотреть сообщение
\[([^\[\]]+)\]
0
KuKu
1561 / 1039 / 93
Регистрация: 17.04.2009
Сообщений: 2,995
16.05.2013, 20:33 8
Код покажите весь. Попробовал так, все норм вроде.
Java
1
2
3
4
5
        String s = "[[[Что то]]]куча текста[Очередные теги] опять текст";
        Matcher matcher = Pattern.compile("\\[([^\\[\\]]+?)\\]").matcher(s);
        while(matcher.find()){
            System.out.println(matcher.group(1));
        }
1
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
16.05.2013, 22:21  [ТС] 9
О точно, забыл про group(1) Спс.
0
Kill100
429 / 295 / 81
Регистрация: 11.12.2010
Сообщений: 1,209
Завершенные тесты: 1
19.05.2013, 14:25  [ТС] 10
Не буду создавать новую тему.
Теперь встрял с тем что не могу выделить запятые перед которыми нету букв.
[^\w_@] выделяет все запятухи. а так не работает
[.,:]?<=([^a-zA-z])
0
19.05.2013, 14:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 14:25

Регулярные выражения
Не могу понять, регулярные выражения нужны что бы искать строки в определенном виде,...

Регулярные выражения
Пока только начинаю разбираться с регулярными выражениями. Делал лабораторную для вуза, уперся как...

Регулярные выражения
ПРивет,помогите с регулярными выражениями,пожалуйста,научите им),может какой туториал есть,или пару...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.