컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post 체스 기물, 체스판 이미지; 체스 관련 고화질 사진 무료 다운로드; Chess Board,...딜리셔스(delicious) 태그 수정, 이름 변경 방법; Edit TagVBA-VBS-비주얼 베이직에서, 특수문자 사용법; Visual Basic Special ...blogspot.com 주소 사용 하는 방법은? 구글 블로그 가입 법trim 이란? TRIM (트림) 의 뜻, 의미 번역 [컴퓨터 용어 사전제곱근 구하기, 루트 근사값 계산; Calc Square Root구글코리아 검색엔진 주소, 일본어 구글 재팬, 한국 구글 Google KoreaHTML-CSS] 이미지/사진, 화면 가운데(중앙)로, 우측으로 정렬 방법; IMG Cen...HTML] Q: 사진/이미지 올리는 IMG 태그에서 HREF 속성 사용법은?HTML] 웹 이미지(사진, 그림) 크기 변경/조정, 사진 사이즈 축소 태그 속성; Ima...

Java/자바] 문자열 검색, 문자 찾기, 지정한 파일 속에서; Find String (GREP) Example

Sunday, December 17, 2006

유닉스 문자열 찾기 명령어인 grep 과 비슷하게 문자열을 찾는 프로그램입니다.

물론 가장 간단하고 기초적인 것이고, grep 처럼 강력한 기능은 전혀 없습니다. 특히 와일드 카드가 되지 않는 제한이 있습니다.

다만 "정규식 검색"을 지원합니다.

그리고 검색의 편의를 위해, 대소문자 구분 없이 찾습니다. 또한 "찾는 문자열"이, 문장의 어디에 있든 항상 찾도록 했습니다. 이것이 오히려 불편할 수도 있는데, 이때는 소스 속의 정규식 처리 루틴만 약간 수정하면 됩니다.


자바: 텍스트 파일 속에서, 문자열 찾기/검색 소스 코드


파일명: Foo.java
import java.io.*;
import java.util.regex.*;

class Foo {
  public static void main(String[] args) {

    if (args.length != 2) {   // args.length 는 옵션 개수
      System.err.println("사용법: java Foo <찾을 문자열(대소문자 구분 없음)> <특정 파일명>");
      System.exit(1);         // 읽을 파일명을 주지 않았을 때는 종료
    }


    // (?i) <- "찾을 문자열"에 대소문자 구분을 없애고
    // .*   <- 문자열이 행의 어디에 있든지 찾을 수 있게
    String findStr = "(?i).*" + args[0] + ".*";
    int lineNumber = 1;       // 행 번호


    try {
      ////////////////////////////////////////////////////////////////
      BufferedReader in = new BufferedReader(new FileReader(args[1]));
      String s;

      while ((s = in.readLine()) != null) {
        if (s.matches(findStr))
          System.out.format("%3d: %s%n", lineNumber, s);

        lineNumber++; // 행 번호 증가
      }
      in.close();
      ////////////////////////////////////////////////////////////////
    } catch (IOException e) {
        System.err.println(e); // 에러가 있다면 메시지 출력
        System.exit(1);
    } catch (PatternSyntaxException e) { // 정규식에 에러가 있다면
        System.err.println(e);
        System.exit(1);
    }

  }
}



테스트용으로 쓸 파일: 0.txt
google

Google

Googlegoogle

GOOGLEOOOOOOO

bar

     barGOOGLE

bargooglebar



컴파일 및 실행 결과:
D:\Z>javac Foo.java

D:\Z>java Foo
사용법: java Foo <찾을 문자열(대소문자 구분 없음)> <특정 파일명>

D:\Z>java Foo goo 0.txt
  1: google
  3: Google
  5: Googlegoogle
  7: GOOGLEOOOOOOO
 11:      barGOOGLE
 13: bargooglebar

D:\Z>


0.txt 라는 파일에서, goo 라는 문자열이 포함된 모든 행을, 대소문자 구분없이, 찾아서 화면에 출력했습니다.



▶▶ Java/자바] 문자열 치환, 바꾸기, 모두 바꾸기 - String Replace All

☞ 자바(Java)

☞ 정규식/정규표현식(Regex; Regular Expression)

1 Comments:
At 6:42 AM, Blogger 김병희 said...

눈이 확 떠지네요!
긁어가서 찬찬히 보고 익혀야겠습니다.
질문해도 될까요?
감사합니다.

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top