Программа регулярных выражений - PullRequest
0 голосов
/ 17 января 2011

Привет, у меня есть следующий текст:

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 не сопровождается символами без слов ... но это не работает.

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Использование Matcher выглядит нормально для меня.Я предполагаю, что ваше приложение вызывает matchIt дважды для каждого регулярного выражения.

1 голос
/ 17 января 2011

regex [C] lokks для символа C в укусе, и, очевидно, каждый из ваших укусов содержит его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...