Обнаружение префиксов в текстовом файле
Я пытаюсь поймать все слова, которые содержат определенные 4-буквенные префиксы в целом текстовом файле. Эти префиксы указываются в виде списка массивов под названием "keywordList". То, как код в настоящее время, я ловлю все слова, которые должны быть пойманы (которые содержат какие-либо префиксы в списке массивов "keywordList"), однако, я получаю дубликаты, и по некоторым причинам иногда он печатает пустую строку (s) после того, как он напечатает одно из обнаруженных слов. Другими словами, шаблон, в котором напечатан вывод, не имеет какой-либо однородности.
Консольный вывод:
Result:
Result:APXP5558899
Result:
Result:
Result:IGC088838383833
Result:
Result:CDAV
Result:
Result:ASHGJHSGDSAGD
Result:
Result:MOE1477347384
Result:
Result:GHTS348939438
Result:ASHGJHSGDSAGD
Result:
Result:MOE1477347384
Result:
Result:GHTS348939438
Result:EGLVxxxxxxxxxxxxx
Result:
Result:ESLVililillililil
Result:
Result:HYSC999xxx
Result:
Я хотел бы, чтобы он печатал с такими результатами:
Result:APXP5558899
Result:IGC088838383833
Result:CDAV
Result:ASHGJHSGDSAGD
Result:MOE1477347384
Result:GHTS348939438
Result:ASHGJHSGDSAGD
Result:EGLVxxxxxxxxxxxxx
Result:ESLVililillililil
Result:HYSC999xxx
Содержание текстового файла:
jkjfkjkjfkjkf jkjkfiiiiidijdjd
ddffdf
ddjjdkkii
jjjjd
sdhfjhdsfhjdsh APXP5558899 fdfsdsfsfsfgsfsdg
asjhdjsahjdhjsahd IGC088838383833 lllllllllpppppssss
JIJSIJSIJSJISJS
CDAV 337990099
kkkkkksslslsls
ASHGJHSGDSAGD MOE1477347384 GHTS348939438
EGLVxxxxxxxxxxxxx ESLVililillililil jdjdjdjdjdjdjddjdj
HYSC999xxx 6969696969696
Мой текущий код:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class searchPdftext
{
public static ArrayList<String> keywordList;
public static String [] TestArray;
public static String Possibilities;
public static void main(String args[]) throws Exception
{
//Possibilities = keyword : TestArray;// i took out an =
int tokencount;
FileReader fr = new FileReader("EvergreenDME.txt");
BufferedReader br = new BufferedReader(fr);
String s = "";
int linecount = 0;
keywordList = new ArrayList<String>(Arrays.asList("APXP", "IGC0", "CDAV", "COSB",
"ESLV", "2ISU", "SUDU", "5BUT", "HYSC",
"BNGF", "45HG", "NBCH", "MOE1", "RFGD",
"GHTS"));
String line;
while ((s = br.readLine()) != null) {
String[] lineWordList = s.split(" ");
for (String word : lineWordList) {
for (String keyword : keywordList) {
if (word.contains(keyword)) {
//System.out.println(s);
test(s);
break;
}
}
}
}
}
private static void test(String text) {
Matcher m = Pattern.compile("\\b"+keywordList+".*?\\b").matcher(text);//"\\bABC123.*?\\b"____Word boundary // (?<=^|\s)ABC123\S*__For White spaces
if (m.find()) {
System.out.println("Result:" + m.group()) ;
while (m.find()) {
System.out.println("Result:" + m.group()) ;//System.out.println("Result:" + m.group() +" ");
}
} else {
System.out.println("Not found: " + text);
}
}
}