Autor Beitrag
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 3655
Erhaltene Danke: 594

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: Fr 23.11.12 00:55 
Moin!

Der ein oder andere kennt das lustige Feature der Ecke, dass man Code eingebunden darstellen kann. Noch weniger Leute wissen, warum ich das jetzt frage, aber:

Ich habe ein problem mit einer Regex, die genau das erkennen soll. Ich dachte mir so, ein Block ist dann "inline", wenn er nicht von Zeilenumbrüchen umgeben ist, deswegen fange ich die ein: /(?<pre>\n)?/. Funktioniert gut, aber nicht, wenn der Block allein steht - denn dann ist ja kein Zeilenumbruch da.

Ich dachte mir dann, gut, matchen wir halt auf /(?<pre>[\n|^])?/ (analog für das Ende). Aber: wie zum Henker unterscheide ich jetzt zwischen "nichts gefunden" und "Anfangsanker gefunden"? Beides erzeugt einen Match von "" in preg_replace_callback:
ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
array(
//...
 "pre" => "",
  1 => ""
//...
)


Wie könnte man das lösen? Oder alternativ, umgehen?


Danke schonmal,
Martok

//Nachtrag: die Regex ist wesentlich länger, zwischen den beiden Enden kommt natürlich was. Aber für den Fall hier ist das erstmal egal.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."