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}
-所以第二个花括号是可选的?