Python使用正则表达式或其他方法检测latex数学

Python to detect latex mathematics using regular expressions or other methods

我想检测一个长文本字符串(来自 "somewhere" 的输入)是否包含数学表达式 encoded in LaTeX。这意味着搜索包含在以下任一内容中的子字符串(在下文中表示为 ...):

  1. $...$
  2. \[...\]
  3. \(...\)
  4. \begin{displaymath} ... \end{displaymath}

除了 displaymath 之外,第 3 项还有其他关键字的一些变体,并且大括号内可能有空格等,但我想我可以在得到 (1) 后找出其余部分, (2), (3) 正在工作。

对于(1),我想我可以做到以下几点:

import re
if re.search(r"$(\w+)$", str):
  (do something)`

但我遇到了其他人的问题,尤其是当它有 \ 时。帮助将不胜感激。

python 版本应为 2.7.12,但理想情况下,适用于两个版本 2.x 和 3.x 的代码将是首选。

你需要转义 \,[,],{,},(,)因为它们在正则表达式中具有特殊含义。

所以,当你想按字面匹配它们时,你需要在它们之前添加一个额外的 \

对于你的第二个模式,使用:

\\[(.+?)\\]

对于第三个模式,使用:

\\((.+?)\\)

对于第四个模式,

\begin\{displaymath\}(.+?)\end\{displaymath\}

你可以看到第四个模式的演示here