Geralmente você pode ter diferentes abordagens aqui:
- use quantificadores preguiçosos
-
.*?em vez de.*
-
- excluir caracteres se você puder encontrá-los aparecendo apenas no fechamento
-
[^{]*ou[^\]em vez de.*
-
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.