0

我是正则表达式的新手,并且一直在努力解决这个问题:我想将 LaTeX 文件转换为 HTML。

我使用 mathjax 渲染方程式和一些 javascript 替换函数来转换标签。我几乎完成了,但我仍然有换行符的问题:我需要转换\\<br>,但只能在标签\begin{array}\end{array}.

示例:在此部分中,仅应替换\\之前的部分。Montrer l'equivalence

$M=\left(
\begin{array}{c|c}
A &B \\ \hline
C &D \\ 
\end{array}
\right)$

$in$ $\mathcal{M}_{n}(\mathbb{K})$ avec $A$ $\in$ $\mathcal{M}_{r}(\mathbb{K})$ inversible.\\ Montrer l'equivalence:
\[
\Bigl( rg(A) = rg(M)  \Bigr) \Leftrightarrow \Bigl( D = CA^{-1}B \Bigr)
\]


\begin{enumerate} 
\item Calculer $detB$ en fontion de $A$. 
\item En déduire que $detB \geqslant 0$.
\end{enumerate}

$M=
\left(
\begin{array}{c|c}
A &B \\ \hline
C &D \\ 
\end{array}
\right)$

我怎样才能用正则表达式做到这一点?

编辑:我在 这里找到了一个方便的正则表达式测试器......

4

1 回答 1

3

您可以使用此模式替换为返回第一个捕获组的回调函数或<br>当它为 void 时:

/(\\begin{array}(?:[^\\]+|\\(?!end{array}))*\\end{array})|\\\\/

这个想法是匹配\begin{array}...\end{array}之前\\避免找到\\里面\begin{array}...\end{array}

细节:

(?:                   # open a non-capturing group
    [^\\]+            # all characters but \ 1 or more times
  |                   # OR
    \\(?!end{array})  # \ not followed by "end{array}"
)*                    # close non-capturing group, zero or more times

.*?这种结构比需要许多回溯才能成功的简单结构更有效。它更长一点但性能更高,因为它避免了惰性量词。

(ps:删除正则表达式中的分隔符/

于 2013-06-11T01:00:22.303 回答