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

Python正则表达式:匹配未被#前置的整数

针对数字提取问题的解决方案

两种可行思路

思路一:先全匹配再反向排除

你可以借助已知的#+\d+正则来实现:

  1. 先用\d+提取字符串里所有数字序列,得到:30123、424302、123、4324、34123
  2. 再用#+\d+匹配所有被#前置的数字串,提取其中的数字部分:4324、34123
  3. 从第一步的结果里删掉第二步的数字,剩下的就是你要的目标:30123、424302、123

思路二:直接匹配目标数字(更高效)

不用绕弯子,直接写正则匹配不被#直接前置的数字:

  • 正则表达式:(?:^|[^#])\K\d+
  • 简单解释:
    • (?:^|[^#]):匹配字符串开头,或者任何不是#的字符(用非捕获组避免产生无用的分组结果)
    • \K:相当于“截断”匹配结果,只保留\K后面的数字部分
    • \d+:匹配连续的数字
  • 直接用这个正则去匹配目标字符串,就能一次性得到30123、424302、123

关于反向匹配的可行性

你说的“分组所有\d+后反向匹配”是可行的,本质就是思路一的逻辑:先把所有数字捞出来,再排除掉被#关联的那些。不过相比之下,思路二的直接匹配一步到位,效率更高,也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:17:12