Regex 用于\begin{?}和\end{?}的正则表达式

Regex 用于\begin{?}和\end{?}的正则表达式,regex,mathjax,Regex,Mathjax,我需要从字符串中匹配\begin{?}和\end{?},其中?是任意数量的字母数字或*字符,因此它必须匹配,例如\begin{align}和\end{align*} 我试着这么做,但我不确定出了什么问题 ^\\begin{[^}]*}$ 从\开始{,在任何非}之后多次,然后以}结束 \end{?}也是一样,但如果可能的话,我希望它在单个正则表达式中执行。{}是用于表示重复的特殊字符,因此也需要转义它们 ^\\begin\{[^}]*\}$ {}是用于表示重复的特殊字符,因此也需要转义这些字符

我需要从字符串中匹配
\begin{?}
\end{?}
,其中
是任意数量的字母数字或
*
字符,因此它必须匹配,例如
\begin{align}
\end{align*}

我试着这么做,但我不确定出了什么问题

^\\begin{[^}]*}$
\开始{
,在
任何非}
之后多次,然后以
}
结束


\end{?}
也是一样,但如果可能的话,我希望它在单个正则表达式中执行。

{}是用于表示重复的特殊字符,因此也需要转义它们

^\\begin\{[^}]*\}$

{}是用于表示重复的特殊字符,因此也需要转义这些字符

^\\begin\{[^}]*\}$

我认为下面的正则表达式是您需要的


\\(begin | end){[a-zA-Z0-9*]+}

我认为下面的正则表达式是您需要的


\\(begin | end){[a-zA-Z0-9*]+}
您的正则表达式:

\\(开始|结束){.*?}


*
将抓取
{}
之间的任何内容,
方法将在第一个
}
出现时停止。

您的正则表达式:

\\(开始|结束){.*?}


*
将抓取
{}
之间的任何内容,
方法将在第一个
}
出现时停止。

嵌套如何?如果您关心嵌套(例如,
\begin{foo}\begin{foo}\end{foo}\end{foo}
,那么正则表达式显然是次优的。如果您不关心嵌套,它可能仍然不理想,但会更合理。是的,字符串中有嵌套,但我正在用“”(无)替换它们所以我想这应该不是一个问题…或者?关于嵌套呢?如果你关心嵌套(例如
\begin{foo}\begin{foo}\end{foo}\end{foo}
那么正则表达式显然是次优的。如果您不关心嵌套,它可能仍然不理想,但会更合理。是的,字符串中有嵌套,但我将用“”(无)替换它们所以我想这应该不是一个问题…或者?不需要在字符类中转义大括号。这是误导性的。哎呀,我的坏家伙纠正了它。外面的人仍然需要转义。不需要在字符类中转义大括号。这是误导性的。哎呀,我的坏家伙纠正了它。外面的人仍然需要转义。正如我从问题要求仅适用于字母数字字符或
{}
括号内的
*
。您的表达式将匹配任何字符,因为我从问题中了解到,要求仅适用于字母数字字符或
{}括号内的
*
方括号。您的表达式将匹配出现的任何字符。如果在第一个字符之后有另一个
{SOMETHING}
(大括号),则它也应该匹配。因此
\begin{array}
应该匹配为
\begin{array}{l}
-所以第二个花括号是可选的?出现了额外的要求-如果在第一个花括号之后有另一个
{SOMETHING}
(花括号),它也应该匹配。所以
\begin{array}
应该匹配为
\begin{array}{l}
-所以第二个花括号是可选的?