regex oder nicht regex?

Status
Nicht offen für weitere Antworten.

kognitio

Aktives Mitglied
Hallo,
ich muss ein File einlesen, in dem ich das erste Wort benötige.
Es kann aber sein, dass das erste Wort erst in Zeile 2 oder 3 steht und in den ersten zeilen "spaces" sind.
Wie mach ich es, dass ich meinen readLine() String vergleichen kann, ob er ein regex ist , oder nicht??
also im Prinzip:
Code:
    510                                      boolean flag = true;
    511                                      while (( zeilen_Leser = te.readLine()) != null && flag)
    512                                      {
    513                                                if( zeilen_Leser = regex)
    514                                                {
    515                                                          flag = false;
    516                                                          System.out.println(zeilen_Leser);
    517                                                 }
    518                                      }
was muss ich anstelle des "regex" setzen???
Mercy und Grüße,
Stephan
 
wenn sich in der zeile nur leerzeichen befinden sollte ein einfaches
Code:
if(line.equals(""))
reichen
 
danke, werd ich machen, aber nur interessehalber, wie würde es mit regex gehen??
...
und wie macht das java intern, soll heißen, woran erkennt es einen regex, allein an den buchstaben?
mercy,
stephan
 
hmm... funktioniert leider nicht ganz. ich habe folgendes gemacht:
Code:
if( endlich.equals("") == false)
damit er mir das erste Wort nimmt, was er bekommt.
Er nimmt auch nun brav das erste Wort, das erscheint. Aber, wenn am Anfang keine Leerzeile da ist, nimmt er das zweite Wort, und nicht das erste, warum?
 
hi, probier mal so:

Code:
if(line.matches("\\s*")){

    //leere zeile
}

sollte klappen. das wäre dann auch gleich die lösung per regex.


gruß math55
 
danke für eure hilfe, ich habe jetzt festgestellt, wo das problem liegt, ich habe mir diese files (aufgrund der großen anzahl) immer mit einem grafischen textedit angeschaut und da erschienen mir diese zeilen als leerzeilen. Wenn ich sie mir mit VIM anschaue, seheh ich, dass es irgendwelche Sonderzeichen sind, die recht häufig vorkommen. (ich kann diese nocht ausschließen, da ich HTML-Seiten parse und sie somit immer unterschiedlich sein werden....) Also muss ich es wahrscheinlich doch über regex machen, oder?
Aber wie mach ich das? Gibt es überhaupt die Möglichkeit so zu testen, "ist das Wort ein regulärerer Ausdruck, oder nicht?"
Gruß,
Stephan
 
kognitio hat gesagt.:
Aber wie mach ich das? Gibt es überhaupt die Möglichkeit so zu testen, "ist das Wort ein regulärerer Ausdruck, oder nicht?"
Nein das geht nicht, da an und für sich jedes wort ein regulärer ausdruck ist, also
Code:
String regex = "regex";
String regex2 = "\\d{2,4}.+?\\s";
Das sind beides regulärer Ausdrücke....

Etwas mehr über regex findest du hier: http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
 
ist es möglich so etwas, dass der regex alle buchstaben des alphabets enthält und wenn er einen davon in der sten zeile antrifft, dann soll er das wort herausschreiben
Code:
boolean flag = true; 
String regex = "abcdefghijklmnopqrstuvwxyz";
while (( zeilenLeser = te.readLine()) != null && flag) 
{ 
      if( zeilenLeser.matches(regex)) 
      { 
            flag = false; 
            System.out.println(zeilenLeser); 
      } 
}
aber wahrscheinlich muss man hier mit iregendetwas wie "contains"(wenn es das gibt) oder indexOf arbeiten, oder?
 
da gehts auch einfacher:
String regex = "^[a-z]+";
jetzt werden alle zeilen gemacht die mit einem Kleinbuchstaben beginnen.
Wenn du auch Großbuchstaben zulassen willst:
Code:
String regex = "^[a-zA-Z]+";
wenn du alle alphanumerische Zeichen erlauben willst:
Code:
String regex = "^\\w+";
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben