mwultong Blog ... 프로그래밍 / 계산기

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

 
Sunday, December 17, 2006

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


유닉스 문자열 찾기 명령어인 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




tag: java
자바 | Java
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

0 Comments:

<< Home RSS 2.0 feed

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