Vorgeschichte: ich nutze ein kleines CSharp-Programm und erstelle damit aus der
SQL-Datei meiner Datenbank eine angepasste Version (Umlaute werden konvertiert, Kommentare können ggf weggelassen werden, usw.). Jetzt stecken in der
SQL-Textdatei noch meine Suchanfragen à la
Code:
<google>irgendwas</google>
Wenn ich schon mal dabei bin, will ich die gleich mit umwandeln und die
HTML-Zeichen
< und
> durch eckige Klammern ersetzen. Ich habe das Anfragemuster quasi 1:1 aus der PHP-Version übernommen:
Code:
string pattern = string.Format
(@"<((?<tag>{0})(=(.*))?)>(.*[^<*]?)<\/(\k<tag>)>", searchEngines);
searchEngines ist ein String "google|heise|heisenews|...|thumb".
?<tag> ist eine Gruppierung, die sicherstellen soll, das am Anfang der selbe Tag, etwa "google", steht wie am Schluss. Jetzt tritt das gleiche Problem wieder auf. Diese Tags
Code:
<google>bla</google> <heise>text</heise>
werden anstandslos gefunden. Kommt am Schluss aber noch ein Google dazu:
Code:
<google>bla</google> <heise>text</heise> <google>foo</google>
findet der String nur das erste und letzte "google" und nimmt alles dazwischen als Text. Wieso?
Bevor das Missverständnis kommt: ich habe der Einfachheit halber die spitzen Klammern genommen! In den beiden Beispielen am Schluss meine ich damit die
HTML-Zeichen
< und
>, so wie in der Suchanfrage gezeigt.