Die frei fließlende Regex

Wir haben gerade eine Regex aufgebaut, die zwar C-Kommentare erkennt, die aber versagt, wenn innerhalb von Strings in Anführungszeichen Kommentar-Begrenzer auftauchen, die gar keine sind. Ein Perl-Programmstück wie das folgende, das Kommentare aus C-Programmen entfernt, tut unter Umständen zu viel des Guten:

$prog =~ s{/\*[^*]*\*+(?:[^/*][^*]*\*+)*/}{}g; # Entfernt C-Kommentare (und anderes!)

Damit wird der Teil, auf den unsere Regex passt, aus dem Text in $prog entfernt (d.h. durch nichts ersetzt). Es gibt aber nichts, das unsere Regex daran hindert, ein Kommentarzeichen zu erkennen, das in einem String auftritt:

char *CommentStart = "
char *CommentEnd   = "*/";  

Hier sind die Kommentare, die wir finden wollten, halbfett dargestellt, ...

Get Reguläre Ausdrücke, 3rd Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.