Regex: 2 identische aufeinanderfolgende Buchstaben erkennen

S

supersucker

Foren Gott
Hi,

ich verwende in perl oft und gerne regular expressions.

Nun stehe ich aber vor einem Problem, bei dem ich nicht weiterkomme, nämlich folgendes:

Ich möchte zwei identische, aufeinanderfolgende Buchstaben, also z.b.

dd
rr
tt

erkennen, nicht jedoch sowas wie

dw
rs
tu

Meiner Ansicht nach ist das mit regulären Ausdrücken nicht möglich, oder doch?

Danke für jede Anregung

P.S. bitte keine Anmerkungen, wie man das sonst programmiertechnisch lösen kann, das ist mir völlig klar, mir geht es darum zu wissen ob, und wenn ja wie man das mit regulären Ausdrücken könnte.
 
Danke Xanti,

mit Backreference ist gut.

Aber:

Gibt es auch eine Möglichkeit beliebig viele identische Zeichen zu erkennen?

Also:

Erkenne

aaa
aaaaa
aaaaaaa

aber nicht

abab
abababa

usw.

Der Haken an

Code:
(.)\1

ist das ich dahinter keine Quantoren hängen kann und somit immer nur zwei Zeichen erkenne.

P.S. Sorry, hatte in meinem ersten Post nicht erwähnt das es mir eigentlich darum ging beliebig viele identische Zeichen zu erkennen und dummerweise zwei geschrieben.
 
supersucker schrieb:
...
...
Der Haken an

Code:
(.)\1

ist das ich dahinter keine Quantoren hängen kann und somit immer nur zwei Zeichen erkenne.
...

Warum nicht? Tu's doch einfach :)

Code:
[~]$ echo "123abcddefffghiijjjjjjjk" | perl -pe 's!(.)\1+!$1!g'
123abcdefghijk

edit: Nochmal zur Erklärung: Der Quantor bezieht sich auf \1, nicht auf den ganzen Ausdruck (.)\1. Also matche auf beliebiges Zeichen, dem eine beliebige (+) Anzahl desselben Zeichens folgt.
 
Zuletzt bearbeitet:
Jup,

ich Held hatte in dem Beispiel mit dem ich das probiert hatte einen Fehler drin, deswegen hatte das bei mir auch nicht funktioniert.

Danke!
 
Xanti schrieb:
Warum nicht? Tu's doch einfach :)

Code:
[~]$ echo "123abcddefffghiijjjjjjjk" | perl -pe 's!(.)\1+!$1!g'
123abcdefghijk

edit: Nochmal zur Erklärung: Der Quantor bezieht sich auf \1, nicht auf den ganzen Ausdruck (.)\1. Also matche auf beliebiges Zeichen, dem eine beliebige (+) Anzahl desselben Zeichens folgt.
oder so ;)
Code:
 echo "123abcddefffghiijjjjjjjk" | perl -pe 's!(.)(?=\1)!!g'
123abcdefghijk
lookahead

Gruß Wolfgang
 
Zurück
Oben