Eu tenho um documento LaTeX que se parece com isto:
Now, we go onto the following theorem:
\theorem{$\sqrt{2}$ is irrational.}{Blah blah blah...}
\remark{This proof is often attributed to Hippasus of Metapontum.}
We can prove a more general result:
\theorem{For $n$ a non-square integer, $\sqrt{n}$ is irrational.}{Blah blah blah...}
Quero combinar tudo o que parece \theoremnoname{Something 1}{Something 2}
e, em particular, obter as partes Something 1
e Something 2
partes distintas da correspondência.
A dificuldade surge em ter um número desconhecido de {
s e }
s dentro das partes e tentar combiná-los.
Eu tentei o regex \theorem\{([^{}]+)\}(\{([^{}]*(\{[^{}]*\}[^{}]*)*)\})
(ou seja, tornando as partes gananciosas), mas ele não retorna nenhuma correspondência.
Caso você possa assumir que o padrão
}{
não aparece dentro do primeiro grupo, o regexp\\theorem\{(.*)\}\{(.*)\}
deve funcionar.Acho que seu prefixo regexp
\theorem\{([^{}]+)\}...
está errado, na verdade não corresponderá a nada, pois\t
tenta corresponder à guia (então use\\
). Mas mesmo depois disso, seu regexp chegará à primeira abertura{
, pois[^{}]
corresponde apenas a caracteres diferentes de{
e}
e não consegue corresponder a abertura encontrada{
ao fechamento}
.Eu poderia usar simplesmente grep e colocar as partes em dois arquivos como este:
Isso fornece o seguinte em seu texto de exemplo: