Mailinglist Archive: opensuse-de (4770 mails)

< Previous Next >
Re: Regular Expressions Teil 2
  • From: B.Brodesser@xxxxxxxxxxxxxx (Bernd Brodesser)
  • Date: Mon Nov 06 05:15:11 2000
  • Message-id: <20001106061511.E11068@xxxxxxxxxxxxxx>



Hallo Maik,

* Maik Holtkamp schrieb am 06.Nov.2000:
> On 00/11/05@19:45 Bernd Brodesser told me in 93lines (3,3K):

> > Bei manchen Programmen kann \1 für das erste Auftreten einer Gruppe
> > geschrieben werden und \2 für das zweite usw. usf:

> > Beispiel:

> > (a*)b\1 steht für b oder aba oder aabaa oder aaabaaa, nicht aber für
> > abaa oder aaba.

> Jetzt brüte ich schon über ein Stunde aber ich krieg es einfach
> nicht rein :(.
>
> Wieso muß paßt denn abaa und aaba nicht?
> Würde cbc passen (wegen dem * in der Klammer)?

Jein. Von c ist niergends die Rede. Da aber ein RegExp nach einem
Teilstring sucht, würde es passen, da es auf b alleine paßt. War
insofern ein schlechtes Beispiel. Besser ist

^([acd]*)b\1$

darauf paßt aba oder cbc oder dbd oder acbac oder ddacbddac, nicht
aber dbc oder acdbdca. Wegen der ^ und $ paßt denn auch kein ebe.

> Ich vermute mein Problem liegt:

> 1. im Verständnis der Klammer (laut Nutshell Gruppierung)

Ja und ja.

> 2. am Verständnis \1 (bezieht sich das auf nur b oder auf alles)

Nur auf das was geklammert wurde. Also im ersten Beispiel das a* und
im neuen Beispiel das [acd]*. Auf das b im ersten Beispiel bezieht es
sich gerade nicht.

> Was ich sehe ist, dass der Ausdruck in Prosa heißt:

> Ein b mit re/li gleich vielen as drum herum.

Haargenau so ist es. Genauer noch ein b mit rechts und links das
Gleiche. Das \1 besagt, genau das was in der ersten Gruppierung steht.

> Das kann ich an dem Ausdruck aber beim besten Willen nicht erkennen
> :(. Hinter dem b ist doch Schluß mit dem eigentlichen Ausdruck wieso
> werden denn da noch as erlaubt?

Wegen dem \1. Um es noch was verwirrender zu machen:

^(a*)(b*)c\2\1$ paßt auf abcba und aabcbaa und abbcbba, nicht aber auf
abbcaab. Die \2 bezieht sich halt auf die zweite Gruppierungsklammer.

> Ich würde mich freuen, wenn ich morgen nacht wieder gut und
> zufrieden schlafen könnte;).

Hoffe ich doch.

Bernd


--
Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht
schon einmal gegeben hat. Ein Archiv der Liste findest Du auf:
http://lists.suse.com/archives/suse-linux
|Zufallssignatur 7

---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx


< Previous Next >
References