PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RegEx: Kann Forderung nach ":" nicht unterdrücken



Trillian
28-09-2003, 02:36
Morgen,
ich habe gerade ein Problem mit einem regulären Ausdruck in einem Perl Script, das ich anpassen möchte.

Mit folgendem Perl-Code wird das Muster zusammen gesetzt:



my $doc_com = '\s*\*\s*';
my $doc_special = "\@\%\$\&";
my $doc_sect = $doc_com.'(['.$doc_special.']?[\w ]+):(.*)';


* $doc_com sorgt dafür, dass wir uns in einem C Kommentar befinden müssen. 100% verstehe ich die Regel aber nicht ;) Whitespace wird ignoriert.
* Danach folgt entweder keins der Zeichen aus $doc_special oder genau eins.
* Danach folgen ein oder mehrere Wörter gefolgt von einem Leerzeichen
* Jetzt muss ein : kommen.
* Zum Abschluß beliebig viele beliebige Zeichen

Habe ich das soweit richtig verstanden?

Wieso muss ich "(.*)" schreiben? Ich würde sagen, dass die Klammern überflüssig sind, da ja nur ein Zeichen vor dem Stern steht, allerdings funktioniert's dann nimmer.

Was ich jetzt ändern möchte:
Der Doppelpunkt soll nicht mehr erforderlich sein.
Wenn ich allerdings den Doppelpunkt aus dem Ausdruck lösche, funktioniert plötzlich garnichts mehr :(

Ich bin nicht sicher, ob diese Informationen ausreichen, um meine Frage zu beantworten, bei Bedarf kann ich das Script und Beispiel-Texte hochladen...

Danke schonmal =)