|
|
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
Всем привет. Возникла необходимость из XML документа выдегривать произвольные куски ограниченные открывающим тэгом и закрывающим тэгом, включая сами тэги. Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Меня например интересует часть документа ограниченная тэгами <cat> ...</cat> Для решения задачи решил использовать регекспы. Использую пакет org.apache.RE Проблем в том, что для моих целей нужен многострочный регексп. Кусок кода следующий: Код: plaintext 1. 2. 3. Я ожидаю получить не null, я кусок XML ограниченный тэгами <cat>...</cat> включая сами тэги, поскольку моё регулярное выражение работает в режиме RE.MULTILINE, и сам регексп построен таким образом, что после встречи тэга <cat> он допускает любые символы, в том числе окончания строки и начало строки. Но мне стабильно возвращается null. В чем моя ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 19:27 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
а парсер какой-нибудь не проще использовать? Странное решение изобретать велосипед.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 08:12 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
для данного случая лучше свего подойдет SAX Parser. Нужно задать в нем свой собственный обработчик, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. переопределить соответствующие методы, которые будут фиксировать лишь теги <cat> подробнее про SAX написано в ya.ru или google.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 10:39 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
а еще лучше Digester для этого случая подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 11:35 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
SAX не проще. Регекесп проще некуда в данном случае, у меня проблема в том, что я не очень хорошо понимаю пока еще регекспы, собственно вопрос в том, как орагнизовать правильный процессинг многостроного регекспа, то есть необходимо чтобы символы перевода строки и начала новой строки считались как обычные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 11:49 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
cooluserSAX не проще. Регекесп проще некуда в данном случае, у меня проблема в том, что я не очень хорошо понимаю пока еще регекспы, собственно вопрос в том, как орагнизовать правильный процессинг многостроного регекспа, то есть необходимо чтобы символы перевода строки и начала новой строки считались как обычные Ну уж если так настаиваете http://www.javable.com/javaworld/07_01/01/ обратите внимание как в там обрабатывются html тели. У вас проблема из-за символа "." в регулярном выражении. Вот это - (<cat>[.|$|^|\n]*</cat>) то же самое, что и это - (<cat>[.]*</cat>) Символ "." это абсолютно любой символ - поэтому у вас и не получается ничего :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 12:37 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
wessen спасибо за ответ, но 1. (<cat>[.]*</cat>) тоже не работает, в прочем я пробовал и другие вариации: 2. (<cat>.*</cat>) 3. (<cat>[.^%]*</cat>) ни одна из них не приводит к успеху и заканчивается результатом описанным в исходном сообщении. да и даже при условии что символ . соответсвует в том числе переводу строки и началу новой (что по умолчанию не так), то и регексп (<cat>[.|$|^|\n]*</cat>) должен приводить к успеху, поскольку символы внутри [] объединяются через операцию ИЛИ (оператор - |). так что вопрос все еще открыт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 16:51 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
так хоть как-то работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. А вот как быть с русскими буквами я так и не понял. Т.е. если в таге <cat> будут например коменты по русский, то уже ничего не находится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 18:22 |
|
||
|
multiline regexp
|
|||
|---|---|---|---|
|
#18+
Проконал вот такой вариант, в режиме Pattern.DOTALL символ . соответствует любым символам, в том числе переводу строки. С русскими символами проблем вроде нет, хотя может от кодировки зависит. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33688513&tid=2149467]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 497ms |

| 0 / 0 |
