0

電子メールを含むテキスト ファイルを処理する必要があるアプリケーションを開発しています。テキストからすべてのトークンが必要です。トークンの定義は次のとおりです。

  1. 英数字
  2. 大文字と小文字を区別する (大文字と小文字を区別する)
  3. 「!」および「$」は構成文字と見なされます。例: FREE!!,$50はトークンです
  4. 「.」(ドット) と ',' コンマは、数字の間にある場合、構成文字と見なされます。例:

    192.168.1.1、$24,500

    トークンです。

等々..

私のニーズに合わせて簡単にカスタマイズできる、Java 用のオープンソースのトークナイザーをいくつか提案してください。StringTokenizer と正規表現を使用するだけで十分でしょうか? 停止も実行する必要があるため、停止やステミングなどの追加機能も実行するオープンソースのトークナイザーを探していました。

4

1 に答える 1

1

前もっていくつかのコメント:

StringTokenizer は、新しいコードでの使用は推奨されていませんが、互換性のために保持されているレガシー クラスです。この機能が必要な場合は、代わりに String の split メソッドまたは java.util.regex パッケージを使用することをお勧めします。

正規表現に関しては、実際には要件に依存します。上記を考えると、これはうまくいくかもしれません:

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(与えられ.,含まれる予定です)?

他にも考慮すべき点があると思います。

これがあなたが始めるのに役立つことを願っています.

于 2013-07-19T00:08:49.047 に答える