Also in diesem Ausdruck ist meiner Meinung nach ein Fehler ...
Und zwar ist [^/\*\*] doch eine Zeichenklasse und keine negative Fundstelle. Ich würde das stattdessen mit einer negativen Look-Ahead-Zusicherung umsetzen.
Und zwar so: (?:[^\*]|\*(?!\/) das trifft alle Zeichen außer dem Stern, oder einen Stern, auf den aber nicht direkt ein Slash folgt.
Zusammengebaut sieht der Ausdruck dann so aus:
/^.*?\/\*{2}(?:[^\*]|\*(?!\/))*?@desc\s+((?:[^\*@]|\*(?!\/))*)/is
#(?<!/\*\*)[^/\*\*]*/\*\*.*?@desc([^@]+).*?\*/#s
Und zwar so: (?:[^\*]|\*(?!\/) das trifft alle Zeichen außer dem Stern, oder einen Stern, auf den aber nicht direkt ein Slash folgt.
Zusammengebaut sieht der Ausdruck dann so aus:
/^.*?\/\*{2}(?:[^\*]|\*(?!\/))*?@desc\s+((?:[^\*@]|\*(?!\/))*)/is
Kommentar