Hallo zusammen,
ich benötige Regex-Hilfe.
Ich möchte beliebigen Text zwischen [% und %] herausfiltern.
Das kann z.B. so aussehen:
Beispiel 1):
[%\fedon\mixon\lr(D1)\single\frame\blue\big\Definition__\black\stress (Koordinatentransformation)\normal
Sei \alpha\in\IR, wir definieren:
| | q_i \mapsto q'_i := q'_i(q_1,...,q_f,t,\alpha)
Diese Transformation sei \stress\invertierbar\normal und für ihre Inverse soll gelten:
| | q'_i \mapsto q_i := q_i(q'_1,...,q'_f,t,\alpha)
Für \alpha=0 soll die identische Transformation vorliegen das heißt:
\frameoff\ | q'_i(q_1,...,q_f,t,\alpha=0):=q_i
\fedoff%]
ABER: es sollte auch mit Abstand zu den [% und %] gehen:
Beispiel 2):
[%
\fedon\mixon\lr(D1)\single\frame\blue\big\Definition__\black\stress (Koordinatentransformation)\normal
Sei \alpha\in\IR, wir definieren:
| | q_i \mapsto q'_i := q'_i(q_1,...,q_f,t,\alpha)
Diese Transformation sei \stress\invertierbar\normal und für ihre Inverse soll gelten:
| | q'_i \mapsto q_i := q_i(q'_1,...,q'_f,t,\alpha)
Für \alpha=0 soll die identische Transformation vorliegen das heißt:
\frameoff\ | q'_i(q_1,...,q_f,t,\alpha=0):=q_i
\fedoff
%]
Das regex-pattern sollte also alles zwischen [% und %] zurückliefern.
Mein bisheriges Pattern sieht so aus:
/(\n[^\\S\n]*)?\\[([%])(.*?)\\2\\]/se
Ich habe mir das aus verschiedenen Pattern zusammengebastelt... Es funktioniert zwar, jedoch muss ich meinen Text aus $1 und $3 (also dem ersten und dritten regex-Ergebnis) zusammensetzen (wobei ich garnicht weiß, was $1 zurückliefert, durch Ausprobieren habe ich halt rausgefunden, dass es nur so funktioniert). Wenn ich meinen Text nur aus $3 nehme, dann fehlt bei Beispiel 1 immer die komplette erste Zeile...
Evtl. kann das jemand optimieren?
Viele Grüße,
Bastian
ich benötige Regex-Hilfe.
Ich möchte beliebigen Text zwischen [% und %] herausfiltern.
Das kann z.B. so aussehen:
Beispiel 1):
[%\fedon\mixon\lr(D1)\single\frame\blue\big\Definition__\black\stress (Koordinatentransformation)\normal
Sei \alpha\in\IR, wir definieren:
| | q_i \mapsto q'_i := q'_i(q_1,...,q_f,t,\alpha)
Diese Transformation sei \stress\invertierbar\normal und für ihre Inverse soll gelten:
| | q'_i \mapsto q_i := q_i(q'_1,...,q'_f,t,\alpha)
Für \alpha=0 soll die identische Transformation vorliegen das heißt:
\frameoff\ | q'_i(q_1,...,q_f,t,\alpha=0):=q_i
\fedoff%]
ABER: es sollte auch mit Abstand zu den [% und %] gehen:
Beispiel 2):
[%
\fedon\mixon\lr(D1)\single\frame\blue\big\Definition__\black\stress (Koordinatentransformation)\normal
Sei \alpha\in\IR, wir definieren:
| | q_i \mapsto q'_i := q'_i(q_1,...,q_f,t,\alpha)
Diese Transformation sei \stress\invertierbar\normal und für ihre Inverse soll gelten:
| | q'_i \mapsto q_i := q_i(q'_1,...,q'_f,t,\alpha)
Für \alpha=0 soll die identische Transformation vorliegen das heißt:
\frameoff\ | q'_i(q_1,...,q_f,t,\alpha=0):=q_i
\fedoff
%]
Das regex-pattern sollte also alles zwischen [% und %] zurückliefern.
Mein bisheriges Pattern sieht so aus:
/(\n[^\\S\n]*)?\\[([%])(.*?)\\2\\]/se
Ich habe mir das aus verschiedenen Pattern zusammengebastelt... Es funktioniert zwar, jedoch muss ich meinen Text aus $1 und $3 (also dem ersten und dritten regex-Ergebnis) zusammensetzen (wobei ich garnicht weiß, was $1 zurückliefert, durch Ausprobieren habe ich halt rausgefunden, dass es nur so funktioniert). Wenn ich meinen Text nur aus $3 nehme, dann fehlt bei Beispiel 1 immer die komplette erste Zeile...
Evtl. kann das jemand optimieren?
Viele Grüße,
Bastian