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.