所以我正在开发一个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()));
}
}
}
}
使用上面的代码和正则表达式,我得到所有大写字母,而不仅仅是全部大写字母。基本上你好不好,但你好。
答案 0 :(得分:1)
如果你想匹配单词边界,请使用\<
和\>
(并记住\
需要加倍才能将它们变成字符串,所以你应该写{{} 1}})。分别为单词的开头和结尾(我认为“单词”定义为\\<
)。所以你的正则表达式是[a-zA-Z0-9_]+
。请注意,这确实匹配一个字母的单词(例如\<[A-Z]+\>
,但不匹配I
中的H
)。如果您不想要这些,请使用Here I am
代替{2,}
。