1

そのため、Java の .doc ファイルから大文字の単語を抽出するプロジェクトに取り組んでいます。私は正規表現を使用していますが、そこでいくつかの問題が発生します。私は正規表現に慣れていませんが、これは私が使っていたものです。

private static final String REGEX = "[A-Z]+";

private void parseWordText(File file) throws IOException {
    FileInputStream fs = new FileInputStream(file);
    HWPFDocument doc = new HWPFDocument(fs);
    WordExtractor we = new WordExtractor(doc);
    if (we.getParagraphText() != null) {
        String[] dataArray = we.getParagraphText();
        for (int i = 0; i < dataArray.length; i++) {
            String data = dataArray[i].toString();
            Pattern p = Pattern.compile(REGEX);
            Matcher m = p.matcher(data);
            List<String> sequences = new Vector<String>();
            while (m.find()) {
                sequences.add(data.substring(m.start(), m.end()));
                System.out.println(data.substring(m.start(), m.end()));
            }
        }
    }
}

上記のコードと正規表現を使用すると、すべて大文字の単語だけでなく、すべて大文字になります。基本的にHelloはダメだけどHELLOはOK。

4

1 に答える 1

1

単語の境界を一致させたい場合は、 and を使用\<します\>(\文字列にするには and を 2 倍にする必要があるため、 と書く必要があります\\<)。それぞれ単語の始まりと終わりに(「単語」は と定義されている[a-zA-Z0-9_]+と思います)。したがって、正規表現は\<[A-Z]+\>. これは 1 文字の単語 ( の などではIなく、 の 、HなどHere I am) にも一致することに注意してください。それらが必要ない場合は、{2,}の代わりに使用してください+

于 2012-11-24T10:47:16.647 に答える