Usando RegEx para encontrar ambientes LaTeX

0

Eu tenho um código LaTeX que é assim:

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

Eu criei este regex para capturar cada um dos cases ambientes:

\begin\{cases\}((\s*.*\s*)*)\end\{cases\}

O que aconteceu é que ele correspondeu iniciando o primeiro \begin{cases} até o último \end{cases} , enquanto eu preciso que ele corresponda a cada ambiente de forma independente, ou seja, para corresponder ao primeiro \end{cases} após cada \begin{cases} correspondente.

Observe que espaços, quebra de linha e guias não são necessários e nem sempre estão presentes.

    
por ένας 08.05.2018 / 09:38

1 resposta

0

Geralmente você pode ter diferentes abordagens aqui:

  1. use quantificadores preguiçosos
    • .*? em vez de .*
  2. excluir caracteres se você puder encontrá-los aparecendo apenas no fechamento
    • [^{]* ou [^\] em vez de .*
por 08.05.2018 / 16:06

Tags