Verwenden von RegEx zum Finden von LaTeX-Umgebungen

426
ένας

Ich habe einen LaTeXCode, der so geht:

--- text might be here --- $\begin k & l & m \\ x & y & z \end$ --- text might be here --- $\begin k & l & m \\ x & y & z \end$ --- text might be here --- $\begin k & l & m \\ x & y & z \end$ --- text might be here --- 

Ich habe dies erstellt regex, um jede der casesUmgebungen einzufangen :

\\begin\((\s*.*\s*)*)\\end\ 

Was passiert ist, ist, dass es vom ersten \beginbis zum letzten Punkt übereinstimmt \end, während ich es für jede Umgebung unabhängig anpassen muss, das heißt, die erste \endnach jeder \beginÜbereinstimmung.

Beachten Sie, dass Leerzeichen, Zeilenumbrüche und Tabulatoren nicht erforderlich sind und möglicherweise nicht immer vorhanden sind.

0
Ich weiß nicht, welche Art von Regex in Latex verwendet wird, daher kann es sein, dass Sie nicht die richtige Syntax erhalten. Sie müssen jedoch hier vorgehen: Verwenden Sie Lazy-Quantifizierer (`. *?` Anstelle von `. *`) Oder schließen Sie Zeichen aus, wenn Sie können sie nur beim Schließen finden (`[^ {] *` oder `[^ \]` anstelle von `. *`) Máté Juhász vor 5 Jahren 0
@ MátéJuhász: Ich habe den faulen Quantifizierer so (`(\ s *. * \ S *) *?) Ausprobiert und es hat richtig funktioniert. Vielen Dank .. :) Ich konnte diese Zeichen nicht ausschließen: `\, {,}`, da sie in der Umgebung verwendet werden könnten. ένας vor 5 Jahren 0

1 Antwort auf die Frage

0
Máté Juhász

Generell können Sie hier unterschiedliche Ansätze verfolgen:

  1. Verwenden Sie faule Quantifizierer
    • .*? anstatt .*
  2. Zeichen ausschließen, wenn sie nur beim Schließen angezeigt werden
    • [^{]*oder [^\]anstelle von.*