Python使用正则表达式或其他方法检测latex数学
Python to detect latex mathematics using regular expressions or other methods
我想检测一个长文本字符串(来自 "somewhere" 的输入)是否包含数学表达式 encoded in LaTeX。这意味着搜索包含在以下任一内容中的子字符串(在下文中表示为 ...
):
$...$
\[...\]
\(...\)
\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。
我想检测一个长文本字符串(来自 "somewhere" 的输入)是否包含数学表达式 encoded in LaTeX。这意味着搜索包含在以下任一内容中的子字符串(在下文中表示为 ...
):
$...$
\[...\]
\(...\)
\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。