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

Python中如何复用已匹配正则并提取#数字间所有文本块?

Python正则表达式提取#数字间文本的解决方案

我来帮你解决这个正则匹配的问题~你遇到的核心问题是原正则会消耗掉中间的#数字标记,导致下一个匹配无法复用这个标记作为起始点,咱们来调整一下正则规则:

原正则的问题

你的初始正则 (?s)(\#\d{1,})(.*?)(\#\d{1,}) 采用“起始#数字 + 中间内容 + 结束#数字”的结构,但每次匹配会把结尾的#数字消耗掉,导致下一次匹配只能从这个#数字之后开始,自然就遗漏了以这个#数字为起始的文本块。

修改后的正则

我们可以用**正向预查(lookahead)**来避免消耗结尾的#数字,修改后的正则如下:

(?s)(#\d+)(.*?)(?=#\d+|$)

正则各部分解释

  • (?s):开启单行模式,让.能匹配换行符,保证跨多行的内容能被正确捕获
  • (#\d+):捕获起始的#数字标记(比如#0、#600)
  • (.*?):非贪婪匹配中间的所有内容,避免过度匹配到后面的块
  • (?=#\d+|$):正向预查,匹配“后面跟着#数字”或者“文本结尾”的位置,不会消耗这个#数字,这样下一次匹配就能直接从这个#数字开始

Python代码示例

下面是用这个正则提取内容的完整代码:

import re

# 你的目标文本
target_text = """#0 $dumpvars 0! 0" 0# bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7 bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6 bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5 b0000000000000000 $ bxxxxxxxxxxxxxxxx / bxxxxxxxxxxxxxxxx . bxxxxxxxxxxxxxxxx ) b0111111111111111 % bxxxxxxxxxxxxxxxx 1 bxxxxxxxxxxxxxxxx 0 bxxxxxxxxxxxxxxxx * b10101010101010101010101010101010 & bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx , bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2 bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3 bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ( bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' $end #600 1! b0000000000000000 ) b0111111111111111 * b10101010101010101010101010101010 + b0000000000000000 / b0111111111111111 1 b00000000000000000000000000000000 5 b10101010101010101010101010101010 4 b00000000000000000000000000000000 2 b00000000000000000000000000000000 3 b010101010101010101010101010101010 7 #1200 """

# 编译正则表达式
pattern = re.compile(r'(?s)(#\d+)(.*?)(?=#\d+|$)')

# 提取所有匹配结果
all_blocks = pattern.findall(target_text)

# 遍历输出每个块
for start_tag, content in all_blocks:
    print(f"=== 从{start_tag}开始的内容 ===")
    print(content.strip())
    print("=========================")

运行这段代码后,你会得到两个完整的文本块:

  1. #0 到 #600 之间的内容
  2. #600 到 #1200 之间的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:37