2013-07-18 2 views
0

전자 메일이 들어있는 텍스트 파일을 처리해야하는 응용 프로그램을 개발 중입니다. 나는 텍스트의 모든 토큰을 필요로하고 다음은 토큰의 정의입니다 : '!'Java 용 사용자 정의 토큰 화 도구

  1. 영숫자
  2. 대소 문자 구분 (경우에 보존하는)
  3. 및 '$'는 구성 문자로 간주됩니다. 예 : FREE!!, $50은 토큰입니다.
  4. '.' (점)과 ','사이에 콤마가 있으면 구성 문자로 간주됩니다. 예를 들어 :

    192.168.1.1, $ 24,500

    토큰입니다.

등등 ..

나에게 나의 요구에 맞게 사용자 정의하기 쉬운 자바에 대한 몇 가지 오픈 소스 tokenizers을 제안하십시오. 단순히 StringTokenizer를 사용하고 정규 표현식으로 충분합니까? 나는 또한 멈춤을 수행해야만한다. 그래서 나는 멈추거나, 형태소 분석과 같은 몇 가지 여분의 일들을 수행 할 오픈 소스 토크 나이저를 찾고 있었다. 앞까지

답변

1

몇 가지 의견 :

있고 StringTokenizer는 사용이 새로운 코드에서 권장하지 않습니다 이유가 있지만 호환성을 위해 유지됩니다 레거시 클래스입니다. 이 기능을 원하는 사람은 문자열 또는 java.util.regex 패키지의 split 메서드를 대신 사용하는 것이 좋습니다.

  • 항상 use Google 첫째 - 지금과 같은 첫 번째 결과는 JTopas입니다. 나는 그것을 사용하지 않았지만,이게 작동 할 수 있다고 본다.

정규식은 실제로 요구 사항에 달려있다. 위 감안할 때,이 작동 할 수 있습니다 : 여기

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Mkt { 
    public static void main(String[] args) { 
    Pattern p = Pattern.compile("([$\\d.,]+)|([\\w\\d!$]+)"); 
    String str = "--- FREE!! $50 192.168.1.1 $24,500"; 
    System.out.println("input: " + str); 

    Matcher m = p.matcher(str); 
    while(m.find()) { 
     System.out.println("token: " + m.group()); 
    } 
    } 
} 

은 샘플 실행의 : 이제

$ javac Mkt.java && java Mkt 
input: --- FREE!! $50 192.168.1.1 $24,500 
token: FREE!! 
token: $50 
token: 192.168.1.1 
token: $24,500 

, 당신은 예를 들어, 정규식을 조정할 필요가 있습니다

  • 당신은으로 $24,500했다 보기. 이 문제가 $24,500abc 또는 $24,500EUR일까요?
  • 192.168.1.1을 포함해야한다고 말했습니까? 192,168.1,1도 포함해야합니까? (.,을 포함)?

내가 고려해야 할 다른 사항이 있습니다.

희망이 있으면 도움이 될 것입니다.

+0

도움과 조언을 보내 주셔서 감사합니다. – kunal18

+0

@stalin 물론, 도와 줘서 기쁩니다! –