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

求助:如何用正则表达式拆分带空格的文本与年份?正则匹配失败

解决字符串中文本与年份拆分的正则问题

嘿,我懂你遇到的麻烦啦!你当前的正则表达式之所以没返回匹配结果,核心问题在于你的文本部分包含空格,而你写的[a-z]+只能匹配连续的字母序列,碰到空格就会停止匹配,导致整个正则无法覆盖"Legal Leaves"这个带空格的文本段,最终匹配失败。

修正后的正则方案

我们只需要调整正则,让文本部分允许匹配字母和空格,同时用非贪婪匹配避免捕获多余的空格,再配合strip()清理收尾空格就可以了:

import re
match = re.match(r"([a-z\s]+?)([0-9]+)", 'Legal Leaves 2017', re.I)
if match:
    text = match.group(1).strip()
    year = match.group(2)
    print(text, year)  # 输出: Legal Leaves 2017

方案解释

  • [a-z\s]+?:[a-z]匹配字母,\s匹配空格,+?是非贪婪匹配,确保在碰到数字时就停止捕获,避免把数字前的空格也包含进文本组;
  • re.I参数保持不变,用来忽略大小写;
  • .strip()用来去掉文本组末尾可能残留的空格,让结果更干净。

替代方案:用split拆分

如果你觉得正则匹配的写法有点繁琐,也可以用re.split结合正向预查来拆分,代码更简洁:

import re
text_part, year_part = re.split(r'\s+(?=\d)', 'Legal Leaves 2017')
print(text_part, year_part)  # 输出: Legal Leaves 2017

这里的\s+(?=\d)表示匹配一个或多个空格,且后面紧跟数字,这样拆分后就能直接得到文本和年份两部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:01