Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск вложенных паттернов, regex 
:(
    Опции темы
Antropoid
Дата 14.10.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 2
Всего: 16



Как сделать так, чтобы на выходе было:
(A) + 
(B)
Код

Pattern p = Pattern.compile("(.*)");    
Matcher m = p.matcher("(A) + (B)");
while (m.find()) {
    System.out.println(m.group());
}


Мой паттерн "(.*)" возвращает "внешнее" совпадение :
(A) + (B)


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
kemiisto
Дата 14.10.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Надо квантификатор * сделать нежадным (ленивым, lazy), добавиви знак ?. 
(.*?)


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Antropoid
Дата 14.10.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 2
Всего: 16



К сожалению нет.
Ничего так не выводит вообще.

Добавлено через 13 минут и 18 секунд
Вобщем еще нужно скобочки обозначать особым образом.
Такой паттерн работает:
".*?\\(.*?\\).*?"


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
kemiisto
Дата 14.10.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Конечно, скобки надо экранировать.

Добавлено через 6 минут и 1 секунду
В любом случае - Ваша регулярка бред сивой кобылы. Вы задачу сформулируйте полностью.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Antropoid
Дата 14.10.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 2
Всего: 16



Ну ок, попробую.

Требуется из строки вычленить все внешние строчки такого вида:
\frac{*}{*}*, где *- любая последовательность символов.

Например, для :
"\frac{a^2 + b^2}{c_\frac{1}{2} + d/2}+1+\frac{3}{4}"
должно получиться так:
frac{a^2 + b^2}{c_frac{1}{2} + d/2}+1+
frac{3}{4}




--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
kemiisto
Дата 14.10.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(Antropoid @  14.10.2010,  15:16 Найти цитируемый пост)
Ну ок, попробую.

Ага, ну вот. Мои опасения подтвердились. Это ведь TeX? А ядро TeX - язык разметки. А разбирать текст на языках разметки (HTML, XML, TeX) с помощью регулярных выражений - очень плохая затея.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Antropoid
Дата 14.10.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 2
Всего: 16



Ага у меня тут тоже что-то не очень клеится :(
А как же быть? Все парсить "руками"?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
kemiisto
Дата 14.10.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(Antropoid @  14.10.2010,  16:29 Найти цитируемый пост)
Все парсить "руками"?

Можно ручками. Но если это был только пример и нужно разбирать выражения посложнее, лучше использовать какой-нибудь генератор парсеров. Тысячи их. Но конкретно для такой задачи - ручками можно.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Zlatogorov
Дата 18.10.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 18.12.2007
Где: BW,Stuttgart

Репутация: нет
Всего: 1



Попробуйте посмотреть в сторону ANTLR.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.