You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则表达式匹配LaTeX文档中的文档类名

解决LaTeX文档类的正则匹配问题

你的问题出在正则里的.*是贪婪匹配——它会尽可能多地抓取字符,直到遇到最后一个},这就导致匹配范围超出了预期的myclass。

要修复这个问题,有两种实用的方法:

方法1:使用非贪婪量词.*?

把贪婪的.*改成非贪婪的.*?,它会匹配到第一个}就停止,完美贴合需求:

import re

latex_text = "blank \\documentclass{myclass} words, more text \\documentclassdoc{11} more words"
s = re.search(r'\\documentclass{(?P<class_name>.*?)}', latex_text)
if s:
    print(s.group('class_name'))  # 输出: myclass

方法2:匹配非}的字符

更精准的方式是直接匹配所有不是}的字符,用[^}],从根源上避免过度匹配:

import re

latex_text = "blank \\documentclass{myclass} words, more text \\documentclassdoc{11} more words"
s = re.search(r'\\documentclass{(?P<class_name>[^}]*)}', latex_text)
if s:
    print(s.group('class_name'))  # 输出: myclass

另外要注意:你原代码里的斜杠是/,但LaTeX命令里的是\,所以在Python字符串的正则里需要用双反斜杠\\来转义(因为Python本身会把单个反斜杠当作转义符),我已经在示例里修正了这个细节。

内容的提问来源于stack exchange,提问作者Kritz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:33:23