|
|
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, чем можно и нужно решить одну мелкую задачу. Имеются строки в одном из двух форматов: 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 писать не хочется, надеюсь на наличие чего-то готового. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 15:47 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Чем regexp-ы не радуют? типа split(String regex) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 15:58 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
NaugЧем regexp-ы не радуют? Ровно одним: не ориентируюсь в существующих средствах и прежде чем начать разбираться - хочу знать, чем это стоит решать. Если String.split - значит, буду разбираться с ним, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:12 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Ещё сканер есть http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:20 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
мысля - использовать string-овский replaceAll и заменить (DESCRIPTION=(ADDRESS=(HOST на "" )(PROTOCOL= на ":" и тд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:28 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Спасибо. К сожалению, в обоих случаях идет задание разделителей, что не совсем удобно - придется сводить второй вариант к первому, а не наоборот. Однако, работать будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:33 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Naugмысля - использовать string-овский replaceAll и заменить Была такая мысль, но у этого, к сожалению, высокая вероятность перестать работать в следующей версии API, откуда я получаю эти строки, когда там решат добавить еще какую-нибудь техническую мелочь (строки коннекта к ораклу допускают большое разнообразие параметров). Идеальным было бы нечто, что способно вытащить значение между допустим HOST= и скобкой. Может не поленюсь и таки сделаю так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:36 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
было бы лучше использовать готовые вещи, как, например, для URL (здесь он не подойдет скорее всего) может как-то заюзать классы для драйверов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:38 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
в принципе сабстринг с этим отлично справится - запросить у него текст между "HOST=" и первой ")" после него... хотя и немного громоздко но не более чем если ползти сканером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:42 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
Я бы делал через регекспы примерно так: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:59 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
XM Спасибо. Похоже, именно то что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:12 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
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. Как грамотнее и быстрее будет? Так, или лучше условий нагородить несколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:41 |
|
||
|
Разбор форматированного текста, может быть regexp-ы...
|
|||
|---|---|---|---|
|
#18+
GMax Ё моё!!! А это вообще нормально так код писать? Просто я такую конструкцию ("\\((\\w+)=([^()]+)\\)") первый раз вижу. Есть похожая задача, только исходная строка попроще, ее реально разобрать, с помощью нескольких условий и штатных средств String. Как грамотнее и быстрее будет? Так, или лучше условий нагородить несколько? Просто после PERL к регекспам очень сильно привыкаешь. :) Лично мне проще так, чем думать над микропарсерами и условиями. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 18:15 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33097892&tid=2152272]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 422ms |

| 0 / 0 |
