using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\\begin\{(\w+)\}.*?\\end\{\1\}|\\(?!begin|end)\w+\{\w+\}";
string input = @"\questao{1}
\begin{enumerate}
esse não
\end{enumerate}
\begin{enumerate}
esse sim
\begin{enumerate}
enumerate dentro de outro, não funciona
\end{enumerate}
\end{enumerate}
\questao{2}
\begin{enumerate}
esse também não
\end{enumerate}
\begin{enumerate}
esse também sim
\end{enumerate}
\questao{3}";
RegexOptions options = RegexOptions.Singleline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx