2011-01-17 16 views
0

Hallo Ich habe den folgenden Text:Regular Expression Programm

SMWABCCA 
ABCCAEZZRHM 
NABCCAYJG 
XABCCA 
ABCCADK 
ABCCASKIYRH 
ABCCAKY 
PQABCCAK  
ABCCAKQ 

Diese Methode nimmt einen regulären Ausdruck in out durch den Benutzer und sollte aus den Strings drucken es gilt aber scheint etwas ganz anderes zu drucken:

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"); 
     } 
    } 

Wenn die Eingabe von „[C],

EDIT:. Leider habe ich den falschen Ausgang ausgedruckt Hier ist die aktuelle Ausgabe:

SMWABCCA 
ABCCAEZZRHM 
NABCCAYJG 
XABCCA 
ABCCADK 
ABCCASKIYRH 
ABCCAKY 
PQABCCAK 
ABCCAKQ 
SMWABCCA 
ABCCAEZZRHM 
NABCCAYJG 
XABCCA 
ABCCADK 
ABCCASKIYRH 
ABCCAKY 
PQABCCAK 
ABCCAKP 

Irgendwelche Ideen warum? Ich glaube, ich bin mit m.find() nicht richtig ...

EDIT: Was ist der reguläre Ausdruck wäre für alle Strings finden, die mit P beenden:

Ich versuchte.

[* P] [\ W]

Was ich interpretiere zu sein - Alles bis ein P gefolgt von Nicht-Wort-Zeichen..aber es funktioniert nicht.

+0

Die Ausgabe ist korrekt. Das sind alle Zeichenfolgen, die ein 'C' enthalten. – OrangeDog

+0

Was ist Ihre erwartete Ausgabe? –

+0

Können Sie zeigen, wie 'matchIt' aufgerufen wird? –

Antwort

2

Die Verwendung von Matcher mir OK aussieht. Meine Vermutung ist, dass Ihre Anwendung zweimal für jeden Regex matchIt aufruft.

+0

Danke, ich habe meinen Code überarbeitet. Bin neu, um zu regexen, also nicht sicher, ob ich es richtig angewendet habe. – dr85

1

regex [C] Lokks für Charakter C in einem Stachel und offensichtlich jede Ihrer Stiche enthält es

+0

Es tut uns leid, den Post oben bearbeitet, um Ihnen die tatsächliche Ausgabe zu zeigen! – dr85