2017-04-26 1 views
0

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, eine Überprüfung zu erhalten, um sicherzustellen, dass die Zeichenfolge, die ich überprüfe, einer Struktur folgt.Sicherstellen, dass eine Zeichenfolge ein bestimmtes Muster hat

zB: String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"

benötigen, um zu bestätigen, dass es ein ', ' durch ein ', ' von einem ', ' von einem '> ' gefolgt gefolgt gefolgt ist und schließlich ein ', '. Die Buchstaben und Zahlen können in der Länge zwischen den Zeichen variieren, die sie trennen.

Ich bin ein bisschen fest auf diesem. Jede Hilfe wäre willkommen.

+1

Dies scheint ein guter Kandidat für Regexes. Ich schlage vor, Sie lesen [dieses Tutorial] (https://docs.oracle.com/javase/tutorial/essential/regex/). Es wird Ihnen helfen, mit etwas zu kommen – jrook

Antwort

0

Sie können folgende RegexMuster in Verbindung mit String#matches() verwenden:

.*, .*, .*, .*>.*, .* 

Codebeispiel:

public static void main(String args[]) 
{ 
    String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"; 
    if (s.matches(".*, .*, .*, .*>.*, .*")) { 
     System.out.println("match"); 
    } 
    else { 
     System.out.println("no match"); 
    } 
} 

Demo hier:

Rextester

+0

Ich denke, das OP will drei Instanzen von ',' (einschließlich eines Leerraumes) gefolgt von einem '>' – jrook

+0

Korrigieren, ich möchte die Räume auch bestätigen. – Oldmanriver

1

Wenn Sie eine beliebige Anzahl von Buchstaben wollen, Ziffern zwischen Sonderzeichen können Sie diese Regex verwenden:

public static void main(String[] args) { 

      String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"; 
      boolean matches = s.matches("\\w+, \\w+, \\w+, \\d+> \\d+, \\w+"); 
      System.out.println(matches); 
} 
+0

'(\\ w +,) {3} \\ d +> \\ d +, \\ w +'? –

0

etwas Versuchen wie die below.FYI, noch nicht getestet. Erklärung, mit [^,]+ .. Sie sagen, alles außer , übereinstimmen und dann , übereinstimmen. Das zweite Muster ist [^>]+ > Entsprechen Sie einem beliebigen Char außer > und dem Spiel >.

[] Zeichenklassen oder Zeichensätze

^ innen [ ] bedeutet negierte Zeichenklassen. read more

^(?![\s]*$)   [^,]+ , [^,]+ , [^,]+ , [^>]+ > [^,]+ $ 
start no empty  1st   2nd   3rd     4th end 
0

Try this:

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,(?!.*[,>]).*$ 

Regex Demo 1

es dafür sorgen, dass das Format genau das, was Sie wollten. und es gibt keine weiteren, oder> den Rest der Saite einschreiben. Aber wenn Ihre Absicht ist mehr Wiederholung,> im String einmal das Format zu ermöglichen, wird gefunden werden, dann können Sie den vorletzten Teil dh (?!.*[,>]) entfernen die Regex so wird es:

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,.*$ 

Regex Demo 2

Verwandte Themen