dedlfix: Regex Zeichenkette in Zeichenklasse

Beitrag lesen

Tach!

Wieso bitte ist beim Regex ~[a-zA-Z(%2f)]+~ ein %1 ein Treffer?

(, %, und ) haben in der Zeichenklasse keine Bedeutung und stehen für sich selbst. Damit stehen ebenso die 2 und das f für sich selbst. Letzteres ist überflüssig, weil bereits in a-z enthalten.

Der Suchausdruck bedeutet doch (in meinem Verständnis): Ein Treffer ist es, sobald mindestens 1 Mal ENTWEDER ein Kleinbuchstabe ODER ein Großbuchstabe ODER die Zeichengruppe %2f gefunden wird.

Ein Zeichen wird gefunden, wenn es mit irgendeinem in der Zeichenklasse übereinstimmt. Wenn da ein Entweder in der Zeichenklassen-Logik wäre, dann würde f auf [f] passen, nicht aber auf [ff]. Entweder wirkt ja ausschließend und sowohl 0 XOR 0 und 1 XOR 1 ergäben false. ([fe] wäre 1 XOR 0 und [ef] wäre 0 XOR 1, beides true.)

Laut meinem Verständnis wäre also ein % alleine noch kein Treffer!

Doch, weil es innerhalb der Zeichenklasse einzeln betrachtet wird.

dedlfix.