Hallo,
wäre es Perl, könnte ich Dir helfen:
1 | #!/usr/bin/perl
|
2 |
|
3 | use strict;
|
4 | use warnings;
|
5 |
|
6 | my $string = "Diieserrrr StrinnGGG enthhaellt doppelte ZZeicheen";
|
7 |
|
8 | while( $string =~ m/([a-zA-Z0-9-_])(\1+)/g) {
|
9 | print "$1 gefolgt von $2...\n";
|
10 | }
|
Zur Erklärung des Regex:
...definiert die Zeichenklasse, die Du grundsätzlich auf Duplikate
untersuchen willst. Die runden Klammern um diese Zeichenklasse bewirken,
dass der Treffer referenzierbar... was dann im zweiten Teil geschieht
Das nachfolgende
referenziert auf das zuvor gefundene Zeichen \1 und prüft, ob es
mindestens
einmal folgt (+)...
In der Zeichenkette "abcdef" trifft der Regex also nicht zu. Zwar passen
die Zeichen auf die definierte Zeichenklasse, der Quantifier passt aber
nicht...
Die Zeichenkette "aabcdeef" hingegen hat zwei Fälle, in denen auch der
Quantifier passt.
Diese werden dann ausgegeben.
In Java kann ich es leider nicht, aber ich bin sicher, dass es dort auch
back-references gibt.
Und das nachfolgende