我正在尝试使用python从LaTeX字符串中提取所有变量。 我要使用的方法是使用正则表达式。我想提取字符串中的所有变量以及字符串中包含的其他符号(例如,符号,LaTeX命令等),但是要区别对待。
我尝试使用re.split()在字符串中查找变量,并相应地拆分字符串。但是,re.split()找不到我要找的所有变量。我知道我的正则表达式可以工作,因为re.findall()可以正常工作。
import re
regex = r'(\b[a-z]\b|(?<=_)[a-z]|(?<=[^a-z])[a-z](?=_))'
latex_str = r'\underset{\mathbf{S}} {\operatorname{arg\,min}} \sum_{i=1}^{k} \sum_{\mathbf x \in S_i} '
findall = re.findall(regex, latex_str, re.IGNORECASE)
split = re.split(regex, latex_str, re.IGNORECASE)
print(findall)
print(split)
此代码段产生以下结果:
['S', 'i', 'k', 'x', 'S', 'i']
['\\underset{\\mathbf{S}} {\\operatorname{arg\\,min}} \\sum_{', 'i', '=1}^{', 'k', '} \\sum_{\\mathbf x \\in S_i} ']
所以re.findall()找到了我想要的所有匹配项,但是re.split()只找到了两个。 而且,由于我使用了捕获括号,因此它也没有捕获文档(http://docs.python.org/library/re.html#re.split)中应有的分隔符。
我这里缺少什么吗?
我正在使用python 3.6