Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Разбор форматированного текста, может быть regexp-ы... / 13 сообщений из 13, страница 1 из 1
02.06.2005, 15:47
    #33097707
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Подскажите, пожалуйста, чем можно и нужно решить одну мелкую задачу.

Имеются строки в одном из двух форматов:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(HOST=bolero)(PROTOCOL=tcp)(PORT=1523))(CONNECT_DATA=(SID=dipdev)))[user:xxx][password:xxx]

и

jdbc:oracle:thin:@bolero:1523:dipdev[user:xxx][password:xxx]

Нужно: как-то распарсить их и проверить, одинаковые данные в них или нет. Еще точнее - желательно привести их к одинаковому формату, дабы использовать полученную строку как ключ в Map-е. Тупой код типа substring писать не хочется, надеюсь на наличие чего-то готового.
...
Рейтинг: 0 / 0
02.06.2005, 15:58
    #33097748
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Чем regexp-ы не радуют? типа split(String regex) ?
...
Рейтинг: 0 / 0
02.06.2005, 16:12
    #33097793
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
NaugЧем regexp-ы не радуют?
Ровно одним: не ориентируюсь в существующих средствах и прежде чем начать разбираться - хочу знать, чем это стоит решать. Если String.split - значит, буду разбираться с ним, спасибо.
...
Рейтинг: 0 / 0
02.06.2005, 16:20
    #33097823
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Ещё сканер есть
http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1
...
Рейтинг: 0 / 0
02.06.2005, 16:28
    #33097843
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
мысля - использовать string-овский replaceAll и заменить
(DESCRIPTION=(ADDRESS=(HOST на ""
)(PROTOCOL= на ":"
и тд
...
Рейтинг: 0 / 0
02.06.2005, 16:33
    #33097856
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Спасибо. К сожалению, в обоих случаях идет задание разделителей, что не совсем удобно - придется сводить второй вариант к первому, а не наоборот. Однако, работать будет :)
...
Рейтинг: 0 / 0
02.06.2005, 16:36
    #33097868
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Naugмысля - использовать string-овский replaceAll и заменить
Была такая мысль, но у этого, к сожалению, высокая вероятность перестать работать в следующей версии API, откуда я получаю эти строки, когда там решат добавить еще какую-нибудь техническую мелочь (строки коннекта к ораклу допускают большое разнообразие параметров). Идеальным было бы нечто, что способно вытащить значение между допустим HOST= и скобкой. Может не поленюсь и таки сделаю так.
...
Рейтинг: 0 / 0
02.06.2005, 16:38
    #33097875
jdev333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
было бы лучше использовать готовые вещи, как, например, для URL (здесь он не подойдет скорее всего)

может как-то заюзать классы для драйверов?
...
Рейтинг: 0 / 0
02.06.2005, 16:42
    #33097892
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
в принципе сабстринг с этим отлично справится - запросить у него текст между "HOST=" и первой ")" после него... хотя и немного громоздко но не более чем если ползти сканером.
...
Рейтинг: 0 / 0
02.06.2005, 16:59
    #33097951
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
Я бы делал через регекспы примерно так:
Код: plaintext
1.
2.
3.
4.
5.
Pattern p=Pattern.compile("\\((\\w+)=([^()]+)\\)");
                Matcher m= p.matcher("dbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(HOST=bolero)(PROTOCOL=tcp)(PORT=1523))(CONNECT_DATA=(SID=dipdev)))[user:xxx][password:xxx]");
                 while (m.find()){
                        System.out.println(m.group( 1 )+'='+m.group( 2 ));
                }
На выходе:
Код: plaintext
1.
2.
3.
4.
HOST=bolero
PROTOCOL=tcp
PORT= 1523 
SID=dipdev
...
Рейтинг: 0 / 0
02.06.2005, 17:12
    #33097977
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
XM
Спасибо. Похоже, именно то что нужно.
...
Рейтинг: 0 / 0
02.06.2005, 17:41
    #33098074
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
XMЯ бы делал через регекспы примерно так:
[src java]
Pattern p=Pattern.compile("\\((\\w+)=([^()]+)\\)");
Matcher m= p.matcher("dbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(HOST=bolero)(PROTOCOL=tcp)(PORT=1523))(CONNECT_DATA=(SID=dipdev)))[user:xxx][password:xxx]");
while(m.find()){
System.out.println(m.group(1)+'='+m.group(2));
}


Ё моё!!!
А это вообще нормально так код писать?
Просто я такую конструкцию ("\\((\\w+)=([^()]+)\\)") первый раз вижу.
Есть похожая задача, только исходная строка попроще, ее реально разобрать, с помощью нескольких условий и штатных средств String.
Как грамотнее и быстрее будет? Так, или лучше условий нагородить несколько?
...
Рейтинг: 0 / 0
02.06.2005, 18:15
    #33098166
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор форматированного текста, может быть regexp-ы...
GMax
Ё моё!!!
А это вообще нормально так код писать?
Просто я такую конструкцию ("\\((\\w+)=([^()]+)\\)") первый раз вижу.
Есть похожая задача, только исходная строка попроще, ее реально разобрать, с помощью нескольких условий и штатных средств String.
Как грамотнее и быстрее будет? Так, или лучше условий нагородить несколько?
Просто после PERL к регекспам очень сильно привыкаешь. :)
Лично мне проще так, чем думать над микропарсерами и условиями. :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Разбор форматированного текста, может быть regexp-ы... / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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