使用带有RegEx的Apache POI来提取大写单词

时间:2012-09-05 21:03:47

标签: regex apache-poi

所以我正在开发一个Project,用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()));
            }
        }
    }
}

使用上面的代码和正则表达式,我得到所有大写字母,而不仅仅是全部大写字母。基本上你好不好,但你好。

1 个答案:

答案 0 :(得分:1)

如果你想匹配单词边界,请使用\<\>(并记住\需要加倍才能将它们变成字符串,所以你应该写{{} 1}})。分别为单词的开头和结尾(我认为“单词”定义为\\<)。所以你的正则表达式是[a-zA-Z0-9_]+。请注意,这确实匹配一个字母的单词(例如\<[A-Z]+\>,但不匹配I中的H)。如果您不想要这些,请使用Here I am代替{2,}