2016-12-23 5 views
2

Ich möchte Zeilen einer Tabelle übereinstimmen. Es gibt keine Symbole, die anzeigen, wo eine Zelle beginnt oder endet, sondern Leerzeichen. Zeichenketten mit < 3 Leerzeichen dazwischen sollten als Zellen gesehen werden.Regex entspricht einer Whitespace-Tabelle

Ein Beispiel Reihe:

"   here is a $$ cell    here another   cells I dont care about........." 

Das in dem mein naiver und ungültiger Versuch Ich möchte nur zwei Zellen:

\\s{5,}([^\\s{2,}]+)\\s{5,}([^\\s{2,}]+)\\s{5,}.* 
+0

Mögliches Duplikat [Leer Matching Regex - Java] (http://stackoverflow.com/questions/4731055/whitespace-matching-regex-java) –

+0

Was ist mit dem führenden/Leerzeichen am Ende? Erwarten Sie leere Zellen? Siehe [diese Demo, BTW] (https://ideone.com/Y6HYFl). –

+0

Nein, ich erwarte keine leeren Zellen. Ich suche im Wesentlichen nach den ersten n Gruppen von Charakteren. – TomTom

Antwort

2

Sie die Eingabe ersten trimmen kann, und dann mit 3 oder mehr Leerzeichen geteilt, dann überprüfen Sie, ob Sie die ersten 2 Zellenwerte bekommen und nutzen sie:

String s = "   here is a $$ cell    here another   cells I dont care about........."; 
String[] res = s.trim().split("\\s{3,}"); 
if (res.length > 1) { 
    System.out.println(res[0]); // Item 1 
    System.out.println(res[1]); // Item 2, the rest is unimportant 
} 

Siehe Java demo

1

Diese Regex den Trick hoffentlich tun sollen:

(?<=\s{3,}|^\s?\s?)\w[\w\W]*?(?=\s{3,}|\s?\s?$) 

Mit Java-Formatierung ist es:

"(?<=\\s{3,}|^\\s?\\s?)\\w[\\w\\W]*?(?=\\s{3,}|\\s?\\s?$)" 

Es versucht, eine Gruppe von Zeichen so kurz wie möglich zu finden, die mit einem nicht weißen Leerzeichen beginnt (so dass es nicht mit einem einzelnen Leerzeichen übereinstimmt) .Dann überprüft es, ob es mindestens 3 weiße Leerzeichen oder die Zeile beginnen und dann prüft, ob es mindestens 3 Leerzeichen oder das Zeilenende nach dem Spiel gibt.

Es passt nur eine Zelle, also wiederholen Sie einfach den Ausdruck, um mehrere Zellen zu entsprechen.

können Sie mess around mit diesem hier: http://fiddle.re/0tmcza

Verwandte Themen