Aquariophile: m/(a*)/ das gleiche wie m/(.*)/ ??

Hallo!

Zitat aus Selfhtml:

passt auf 'a' und 'aa' und 'aaaaa' und 'b' (kein oder beliebig viele 'a')

Das Probierte ich jetzt aus:

====================================================
perl -e '
$foo="saodjhajkl4";
if ($foo =~ m/(a*)/) { print "\nOK\n"; }
'

OK

Meine Frage:
Wenn a*  eh auf alles matcht,
wofuer dann überhaupt ein a hinschreiben,
dann ist das eh das gleiche wie .*  oder?

Ich mein ich sehe keinen unterschied??

Danke
Aquariophile

  1. Moin!

    Meine Frage:
    Wenn a*  eh auf alles matcht,
    wofuer dann überhaupt ein a hinschreiben,
    dann ist das eh das gleiche wie .*  oder?

    Nein, ist es nicht. Der Sinn kommt, wenn du mehr als "nichts" finden willst.

    /a*/ steht für "Null oder mehr A".

    Wenn a* aber innerhalb eines komplexeren Ausdrucks steht, macht es Sinn:

    /ba*b/ steht für "ein B, Null oder mehr A, und ein B". Also bb, bab, baab ...

    /^a*$/ steht für "Anfang, Null oder mehr A, Ende" - ein String, der nur aus a bestehen darf.

    Wenn du hingegen .* suchst, dann suchst du Null oder mehr beliebige Zeichen.

    Wenn du /b.*b/ suchst, findest du bb, bab, bbb, bcb, bdb, baab, babb, bcdefgjb,...

    Ich mein ich sehe keinen unterschied??

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)