我正在从TSV文件的唯一名称中读取模式(此时效率无关紧要):
while (dataRow != null) {
String[] dataArray = dataRow.split("\t");
String name = dataArray[1];
combined += Pattern.quote(name.replace("\"", "")) + "|";
dataRow = TSVFile.readLine(); // Read next line of data.
}
Pattern all = Pattern.compile(combined);
由于名称中包含quote()
个字符,因此必须使用Regex
。
现在我将Pattern
与输入文本匹配:
Matcher m = all.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
matches.add(m.group());
}
matches
包含空格字符,单个字符,单词部分以及整个单词,但我只想要匹配整个单词。更确切地说:我想要匹配最长的子字符串,即至少一个字。当然,我可以在最后while
循环中对所有内容进行后处理,但这不是Matcher
的意思。