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

为何Python正则表达式提取目录时无法匹配连字符后的内容

问题原因

你写的正则匹配失败有两个核心原因:

  1. 你用到的\S规则仅匹配非空白字符,而你需要提取的条目名称中间包含空格(比如ITOM - IT Object Model中ITOM后就存在空格),\S*遇到第一个空格就会停止匹配,所以仅能拿到每个条目的开头单词。
  2. 你的正则没有设置正确的终止匹配边界,就算修改规则允许匹配空格,也会把后面的点号、页码内容一起匹配,不符合提取要求。
    另外你代码中定义的字符串变量名为test,正则调用时用的是test1,变量名不匹配也会导致运行异常。

解决方法

你可以用以下正则实现需求,依靠条目标题后连续的点号作为终止边界:

re.findall(r'^(.*?)\s*\.+', test, re.MULTILINE)

规则说明:

  • ^ 配合re.MULTILINE匹配每一行的行首
  • (.*?) 非贪婪匹配任意字符,作为捕获组返回就是你需要的条目标题
  • \s*\.+ 匹配标题末尾可能的空白字符,再匹配至少一个连续的点号作为终止标记,自动过滤掉后面的点和页码内容。

运行上述代码即可拿到你需要的结果:

['Disclaimer', 'ITOM - IT Object Model', 'DB – Datenbank Model', 'DB - Datenbank Model - Views' ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:36:03