Entwickler-Ecke

Programmiersprachen (Server) - Regex: "Text steht innerhalb Absatz"


Martok - Fr 23.11.12 00:55
Titel: Regex: "Text steht innerhalb Absatz"
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:

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.