자바 스트링 검색 질문입니다.

다크슈테펜의 이미지

title Debian GNU/Linux, kernel 2.6.10-1-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.10-1-686
savedefault
boot

title       Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode)
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro single
initrd      /boot/initrd.img-2.6.10-1-686
savedefault
boot

title Debian GNU/Linux, kernel 2.6.9-2-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-2-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.9-2-686
savedefault
boot

이 값이 저장된 스트링에서 코드부분만 불러오고 싶습니다.
어떤 방법이 가장 좋을까요..? 인덱스 오브도 써봤고 정규식으로도 해봤는데 원하는 값이 나오지 않습니다.어떻게 하면 원하는 값을 가지고 올수 있나요...?

iolo의 이미지

어떤식으로 하셨는지를 보여주지 않으니 어떤 문제가 있는지는 알수 없지만... 안될이유가 별로 없습니다.
제가 이해한게 맞다면  ... 로 둘러싸인 부분을 뽑아내고 싶다는 것 입니까?

int a = str.indexOf("

");
int b = str.lastIndexOf("
");
String result = str.substring(a + "
".length(), b);
 
대충 이런식이면 되지 않을까요?
물론 [code]...
안에 다시 내포된다든지 ...가 여러쌍이라면 좀 더 복잡해지겠지만 안될 것은 없을 것 같은데요...

단, 정규식을 쓰시는 것은... 여러줄에 걸친 것이라 다소 다를 수 있습니다. jakarta-oro같이 좀 더 강력한 정규식 패키지를 쓰는 것이 편할 수 있겠죠.

bbcode사용불가해야 하는군요-.-;;;

----
the smile has left your eyes...

다크슈테펜의 이미지

,는 스트링에 저장되어 있지 않습니다.그러므로 원래 스트링 변수에 저장된 값은 바로

title Debian GNU/Linux, kernel 2.6.10-1-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.10-1-686
savedefault
boot

title Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.10-1-686
savedefault
boot

title Debian GNU/Linux, kernel 2.6.9-2-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-2-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.9-2-686
savedefault
boot

입니다.

검색시에 사용할 스트링은 title Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode) 를 시작점으로 하고
savedefault
boot 를 끝점으로 생각하고 있습니다.
저도 인덱스 title Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode) 을 그리고savedefault
boot 를 라스트 인덱스 오브에 집어 넣고 돌려 봤습니다만,결과는

root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.10-1-686

title Debian GNU/Linux, kernel 2.6.9-2-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-2-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.9-2-686

이렇게 나왔습니다.그리고 정규식을 써보면
title Debian GNU/Linux, kernel 2.6.10-1-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.10-1-686
savedefault
boot

title Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-1-686 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.10-1-686
savedefault
boot
이렇게 나옵니다.식은 "title//s*"+combo.getText()+".*savedefault/nboot"로 했습니다.중간에 발견하면 브레이크 걸려고 해도 자바 상에서 에러가 발생하더군요...

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

atie의 이미지

약간 꼬아서, 이렇게 하면 되겠네요.

String start = "title Debian GNU/Linux, kernel 2.6.10-1-686 (recovery mode)";
String end = "title";
int a = str.indexOf(start);
int b = str.indexOf(end,a+1);
String result = str.substring(a, b);

----
I paint objects as I think them, not as I see them.
atie's minipage

다크슈테펜의 이미지

매번 도움 주시고 감사합니다.
기초적인 질문인것 같은데 이제는 이거는 어떻게 떼어 내죠
이번에도 인덱스 오브를 사용해서 가져오는 게 좋을 것 같은데
문제는 이게 개행문자네요 ㅠ0ㅠ;;
이거는 라스트 인덱스를 뭘로 잡아야죠...?

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

atie의 이미지

이번에는 정규식을 써서 떼어보는게... 공백으로 변환해도 되면, 아래 코드처럼.

String patternStr = "(?m)$^|[\\r\\n]+\\z";
String replaceStr = " ";

그런데, 자동으로 떨어져야 하는게 아니던가요?

----
I paint objects as I think them, not as I see them.
atie's minipage

다크슈테펜의 이미지

매번 정말 감사드립니다..ㅠ0ㅠ;;

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

iolo의 이미지

헐... 제가 완전히 엉뚱한 소릴 했군요-.-;
저 형태라면 줄 단위로 파싱하는 것이 훨씬 쉬울든 합니다.
파일을 읽을때 줄단위로 읽어도 될것이고,
한번에 읽었다면 그냥 split으로 나눠도 될 것이구요...
한 줄 내에서는 역시 키워드와 값을 공백 문자로 split하면 되겠네요.

그건 그거고...
자바로 리눅스 시스템 관리툴을 만드시는 듯 한데...
무슨 배포판인가요?
자바에... SWT인가요?

----
the smile has left your eyes...

다크슈테펜의 이미지

iolo wrote:
헐... 제가 완전히 엉뚱한 소릴 했군요-.-;
저 형태라면 줄 단위로 파싱하는 것이 훨씬 쉬울든 합니다.
파일을 읽을때 줄단위로 읽어도 될것이고,
한번에 읽었다면 그냥 split으로 나눠도 될 것이구요...
한 줄 내에서는 역시 키워드와 값을 공백 문자로 split하면 되겠네요.

그건 그거고...
자바로 리눅스 시스템 관리툴을 만드시는 듯 한데...
무슨 배포판인가요?
자바에... SWT인가요?

데비안 시드에서 자바 SWT로 만들고 있습니다.
그냥 제가 유용하게 사용할 그런 프로그램을 만들고 싶어서....

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

iolo의 이미지

darkschutepen wrote:
iolo wrote:
헐... 제가 완전히 엉뚱한 소릴 했군요-.-;
저 형태라면 줄 단위로 파싱하는 것이 훨씬 쉬울든 합니다.
파일을 읽을때 줄단위로 읽어도 될것이고,
한번에 읽었다면 그냥 split으로 나눠도 될 것이구요...
한 줄 내에서는 역시 키워드와 값을 공백 문자로 split하면 되겠네요.

그건 그거고...
자바로 리눅스 시스템 관리툴을 만드시는 듯 한데...
무슨 배포판인가요?
자바에... SWT인가요?

데비안 시드에서 자바 SWT로 만들고 있습니다.
그냥 제가 유용하게 사용할 그런 프로그램을 만들고 싶어서....

오호@..@ 멋지군요.
그렇다면 앞으로도 여러가지 파일을 많이 파싱하셔야 겠네요~
그렇다면 antlr같은것을 한번 써보시는 것도 좋을 듯 하네요...
형식이 좀 더 복잡해지면 그냥 스트링만 갖고 파싱하는 게 너무 귀찮아서요~..~

홧팅하시구요... 좋은 결과 기대하겠습니다-o-/

----
the smile has left your eyes...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.