Привет, у меня есть следующий текст:
SMWABCCA
ABCCAEZZRHM
NABCCAYJG
XABCCA
ABCCADK
ABCCASKIYRH
ABCCAKY
PQABCCAK
ABCCAKQ
Этот метод извлекает пользовательское регулярное выражение и ДОЛЖЕН распечатать строки, к которым он применяется, но, кажется, выводит что-то совершенно другое:
private void matchIt(String regex) {
Pattern p = Pattern.compile(regex);
Matcher m = null;
boolean found = false;
for(int i = 0; i < data.length; i++){
m = p.matcher(data[i]);
if(m.find()){
out.println(data[i]);
found = true;
}
}
if(!found){
out.println("Pattern Not Found");
}
}
При вводе "[C],
РЕДАКТИРОВАТЬ: Извините, я распечатал неправильный вывод. Вот фактический результат:
SMWABCCA
ABCCAEZZRHM
NABCCAYJG
XABCCA
ABCCADK
ABCCASKIYRH
ABCCAKY
PQABCCAK
ABCCAKQ
SMWABCCA
ABCCAEZZRHM
NABCCAYJG
XABCCA
ABCCADK
ABCCASKIYRH
ABCCAKY
PQABCCAK
ABCCAKP
Есть идеи, почему? Я думаю, что я неправильно использую m.find () ...
РЕДАКТИРОВАТЬ: Что будет регулярное выражение для поиска всех строк, которые заканчиваются на P:
Я пытался:
[. * P] [\ W]
Которым я интерпретирую - все что угодно, пока P не сопровождается символами без слов ... но это не работает.