Mai 31

Heute noch das letzte Beispiel zu (nicht) gierigen Operatoren:

Pattern p = Pattern.compile(“ckc.+”);
Matcher m = p.matcher(“c2ckcckcx9ckckx7c”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

‘.’ dient immer noch als Ersatz für ein Zeichen; ‘+’wird nach einer oder unendlich vielen Zeichenketten gesucht.

Folglich ist die Ausgabe:

2 ckcckcx9ckckx7c

Erst einmal kein Unterschied zu ‘:*?’. Schauen wir uns die Abänderung zum nicht-gierigen Operator mal an:

Pattern p = Pattern.compile(“ckc.+?“);

Hier ist die Ausgabe:

2 ckcc
10 ckck

Zum Vergleich, bei Einsatz von ‘*’ (kein oder beliebig oftes Vorkommen) war die nicht-gierige Ausgabe:

2 ckc
5 ckc
10 ckc

Tagged with:
Mai 29

Nachdem wir uns beim letzten Mal auf *? fokusiert haben, möchte ich noch ?? und +? vorstellen.

Beginnen wir heute mit ??:

Pattern p = Pattern.compile(“ckc.?”);
Matcher m = p.matcher(“c2ckcckcx9ckckx7c”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

‘.’ dient wieder als Platzhalter für 1 Zeichen, ‘?’ bedeutet, das diese Zeichenfolge 0 oder einmal vorhanden sein muss.

Folglich ist die Ausgabe hier:

2 ckcc
10 ckck

Nach Abänderung auf nicht-Gierigkeit:

Pattern p = Pattern.compile(“ckc.??“);

ist die Ausgabe:

2 ckc
5 ckc
10 ckc

Tagged with:
Mai 27

Heute wollen wir uns mal (nicht) gierige Operatoren anschauen und lernen, diese zu unterscheiden:

Pattern p = Pattern.compile(“ckc.*”);
Matcher m = p.matcher(“c2ckcckcx9ckckx7c”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

‘.’ dient ja als Ersatz für jeden möglichen anderen Charakter, mit ‘*’ wird nach einem oder unendliche vielen dieser Zeichenkette (ckc + weiterer Charakter) gesucht.

Folglich wäre die Ausgabe:

2 ckcckcx9ckckx7c

Es wird also in diesem Falle alles ausgegeben, der Operator ist gierig.  Quasi ist hier der Auftrag: Decke die längstmögliche Zeichenkette ab. Um diesen nicht gierig zu machen, wird noch ein ‘?’ hinzugefügt:

Pattern p = Pattern.compile(“ckc.*?“);

Nun ist die Ausgabe:

2 ckc
5 ckc
10 ckc

Tagged with:
Mai 25

‘.’ dient als Ersatz für jeden möglichen anderen Charakter.

Pattern p = Pattern.compile(“1.3″);
Matcher m = p.matcher(“123 13 12 1c3″);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

Somit ist die Ausgabe hier:

0 123
10 1c3

Tagged with:
Mai 23

Schauen wir uns mal folgende Suche genauer an:

Pattern p = Pattern.compile(“\\w\\w\\w([-\\s])\\w\\w”);
Matcher m = p.matcher(“ccc-ccccc”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

Hier wird nach einem String gesucht, der 3 Zeichen und dann genau eine Leerstelle oder ein ‘-’ und danach wieder 2 Zeichen enthält.

Folglich ist die Ausgabe: 0 ccc-cc

Sollten mehr als 1 Zwischenzeichen erlaubt sein, müsste Pattern auf

Pattern p = Pattern.compile(“\\w\\w\\w([-\\s])*\\w\\w”);

abgeändert werden.


Tagged with:
Mai 22

Was ist der Output des folgenden Codes:

String [] a = {“eins”,”zwei”};
System.out.print(a.length);
System.out.print(a[0].length());

Antwort/ answer

Tagged with:
Mai 21

Für den Fall, das alle Zeichen, ab einem bestimmten Zeichen ausgegeben werden sollen, gibt es natürlich auch eine Lösung:

Pattern p = Pattern.compile(“c([^,])*”);
Matcher m = p.matcher(“cccxcc”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

Die Ausgabe ist demnach:

0 cccxcc

Tagged with:
Mai 19

Mit ‘+’ suchen wir nach einem oder unendlich vielen ‘c’

Pattern p = Pattern.compile(“c+”);
Matcher m = p.matcher(“cccxcc”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

Die Ausgabe ist demnach:

0 ccc
4 cc

Tagged with:
Mai 18

Was ist die Ausgabe bei folgendem Code?

Date dateA = new Date();
Date dateB = new Date(0);
Date dateC = new Date(1);

System.out.println(dateA.equals(dateB));
System.out.println(dateA.equals(dateC));
System.out.println(dateB.equals(dateC));

Antwort/ answer
Tagged with:
Mai 17

Heute wird mit * wird nach keinem oder unendlich vielen ‘c’ gesucht.

Pattern p = Pattern.compile(“c*”);
Matcher m = p.matcher(“cccxcc”);
boolean b = false;
while (b=m.find())

System.out.println(m.start() +” “+m.group());

Die Ausgabe ist demnach:

0 ccc
3
4 cc
6

Tagged with:
preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs