powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Разбор форматированного текста, может быть regexp-ы...
13 сообщений из 13, страница 1 из 1
Разбор форматированного текста, может быть regexp-ы...
    #33097707
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, чем можно и нужно решить одну мелкую задачу.

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

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
Разбор форматированного текста, может быть regexp-ы...
    #33097748
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем regexp-ы не радуют? типа split(String regex) ?
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097793
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaugЧем regexp-ы не радуют?
Ровно одним: не ориентируюсь в существующих средствах и прежде чем начать разбираться - хочу знать, чем это стоит решать. Если String.split - значит, буду разбираться с ним, спасибо.
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097823
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё сканер есть
http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097843
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысля - использовать string-овский replaceAll и заменить
(DESCRIPTION=(ADDRESS=(HOST на ""
)(PROTOCOL= на ":"
и тд
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097856
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. К сожалению, в обоих случаях идет задание разделителей, что не совсем удобно - придется сводить второй вариант к первому, а не наоборот. Однако, работать будет :)
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097868
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naugмысля - использовать string-овский replaceAll и заменить
Была такая мысль, но у этого, к сожалению, высокая вероятность перестать работать в следующей версии API, откуда я получаю эти строки, когда там решат добавить еще какую-нибудь техническую мелочь (строки коннекта к ораклу допускают большое разнообразие параметров). Идеальным было бы нечто, что способно вытащить значение между допустим HOST= и скобкой. Может не поленюсь и таки сделаю так.
...
Рейтинг: 0 / 0
Разбор форматированного текста, может быть regexp-ы...
    #33097875
jdev333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было бы лучше использовать готовые вещи, как, например, для URL (здесь он не подойдет скорее всего)

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


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